题解:AT_abc480_c [ABC480C] Self-Stopping Shower
前言
没打比赛,写篇题解玩玩。
思路
注意到题目本质上就是一个贪心的区间覆盖问题,也就是给定几个区间(左端点为
我们可以将
思路给完了,建议自己先试着写一遍,如果不会的话再看下面的代码哦!
AC code
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+10;
int a[MAXN];
int n,k,t;
int main(){
scanf("%d%d%d",&n,&k,&t);
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
int last=0,j=1;
int ans=0;
while(last<t){
int tmp=last;
while(j<=n&&a[j]<=last){
tmp=max(tmp,a[j]+k);
j++;
}
if(last==tmp){
ans++;
last+=k;
}
else last=tmp;
}
printf("%d",ans);
return 0;
}
题解不易,祝所有点赞的同学们运气爆表并 AK 接下来的 CSP-J/S,以及每一场比赛!!!谢谢啦 qwq。