首页 > 代码库 > Codeforces 508C Anya and Ghosts
Codeforces 508C Anya and Ghosts
题意:
m只鬼要来 你需要在鬼来的时候点起至少r根蜡烛 每根蜡烛点亮需要耗时1s并且持续亮ts 不能同时点多根蜡烛 问最少需要多少蜡烛
思路:
贪心即可 每当鬼来之前保证r根蜡烛亮着 用一个队列维护点蜡烛的时间 如果出现“不能点亮足够r根蜡烛”或者“鬼来的时候蜡烛有些熄灭了不如r根”则判定为失败
代码:
#include<cstdio> #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<map> #include<set> #include<vector> #include<queue> #include<cstdlib> #include<ctime> #include<cmath> using namespace std; typedef unsigned long long ULL; #define M 100010 int n,t,r; int x[M],qu[M],L,R; int can(){ L=R=0; for(int i=1;i<=n;i++){ while(L<R&&qu[L]+t<x[i]) L++; int need=r-(R-L); if(need>0&&R&&x[i]-qu[R-1]-1<need) return -1; while(need){ qu[R++]=x[i]-need; need--; } while(L<R&&qu[L]+t<x[i]) L++; if(R-L<r) return -1; } //for(int i=0;i<R;i++) printf("%d\n",qu[i]); return R; } int main(){ scanf("%d%d%d",&n,&t,&r); for(int i=1;i<=n;i++) scanf("%d",&x[i]); printf("%d\n",can()); return 0; }
Codeforces 508C Anya and Ghosts
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。