首页 > 其他分享 >Nebius Welcome Round (Div. 1 + Div. 2) B. Vaccination

Nebius Welcome Round (Div. 1 + Div. 2) B. Vaccination

时间:2023-03-15 16:14:02浏览次数:53  
标签:Vaccination Welcome int 病人 front Div include dq

link

Code

// #include <bits/stdc++.h>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <unordered_map>
#include <map>
#include <set>
#include <cctype>
#include <list>
#include <bitset>
#define dbg(x) cout << #x << " = " << x << "\n"
using namespace std;
#define cf int _o_o_;cin>>_o_o_;for (int Case = 1; Case <= _o_o_;Case++)
#define SZ(x) (int)(x.size())
inline void solve();
int main() {solve();return 0;}
// ios::sync_with_stdio(false), cin.tie(nullptr);
 
using ll = long long;
const int maxn = 2e5 + 10;

void ok();
inline void solve() {
    int t;
    cin >> t;
    while (t -- ) {
        ok();
    }
}

inline void ok() {
    int n, k, d, w;
    cin >> n >> k >> d >> w;
    deque<pair<int,int>> dq;
    int ans = 0;
    // 贪心策略:在第一个病人即将走的时候给他药。
    for (int i = 0;i < n;i++) {
        int x;
        cin >> x;
        if (SZ(dq) != 0 && x > dq.front().first + d)    // 如果队头的这袋药在时间x已经过期了,就丢掉这些药。
            dq.pop_front();  

        if (SZ(dq) ==  0) { // 如果当前队列是空的,
            dq.push_back({x + w, k});   // 在第i个病人即将要走的时候,打开一袋药。那么后面一定有药。
            ans ++; // 又打开了一袋药,答案加一
        }
        dq.front().second --;   // 给当前病人i一包药。当前时间是dq.front().first
        if (dq.front().second == 0) dq.pop_front();     // 给了病人i后,这袋药用完了,丢掉。
    }
    cout << ans << "\n";
}

标签:Vaccination,Welcome,int,病人,front,Div,include,dq
From: https://www.cnblogs.com/FanWQ/p/17218903.html

相关文章

  • 使用js的html2canvas截图div并下载
    暂未完赛,请继续加油吧-测试截图```functiongetScreenShot(){html2canvas(document.querySelector("#canvas")).then(canvas=>{//docume......
  • Educational Codeforces Round 105 (Rated for Div
    EducationalCodeforcesRound105(RatedforDiv.2)ABCString给定一个字符串只有A、B和C构成。要求替换A、B、C为')'和'(',并且相同字母替换的是一样的,使得字符串变......
  • Codeforces Round 713 (Div
    CodeforcesRound713(Div.3)A-BPalindrome给定字符串只含有\('?'\'0'\'1'\),给定字符串中1的个数\(a\)和0的个数\(b\),你需要将?替换成0或1,使得该字符串变成回文......
  • Codeforces Round 857 (Div. 2)
    比赛地址做到F心态崩了,自然不会去做G.F考虑最终路径一定是这样的1到x节点在x处攒够路费再到n.后者可以通过从n跑dij来求最短路。考虑前者需要求从1~x的最小代价。......
  • A. K-divisible Sum
    A.K-divisibleSum思路\[ans=\left\lceil\frac{kx}{n}\right\rceil\]\[x=x_{min}\ge\left\lceil\frac{n}{k}\right\rceil\]代码点击查看代码#inc......
  • Vue.js框架:单个div盒子(元素)放至全屏显示
    一、页面元素需要全屏展示的div或其他元素标签的id要设置,方便获取dom节点。再添加一个可以触发点击事件的元素进行操作。<divid="fullDom"><span@click......
  • 2023学校周赛Round1 Div1
    \(A\)拿个栈模拟一下。\(B\)推一推式子,把\((\displaystyle\sum_{i=1}^{n}a_i)^3\)展开,会得到三种类型的式子,其中两个都是可以线性求出来的,第三个的6倍就是答案。\(C\)......
  • Codeforces Round 857 (Div. 2)
    题目链接A核心思路读懂题目也就不难了。//Problem:A.Likes//Contest:Codeforces-CodeforcesRound857(Div.2)//URL:https://codeforces.com/contest/180......
  • Codeforces Round #666 (Div. 2)D. Stoned Game(博弈问题)
    problemT和HL玩游戏,n堆石头,玩家轮流在石堆中选择一个(但不能是上一个人取的那堆)取一个石子一旦有一方不能取石头则判输solution统计所有石头数,如果总数小于mx(最多石头的一堆)......
  • Codeforces Round 857 (Div. 2)
    更好的阅读第一次进入时加载缓慢,请耐心等待。赛时降智,菜是原罪。A.Likes简单题。#include<bits/stdc++.h>usingnamespacestd;intT,n,a[11111],s[11111];intm......