bzoj没有题面....
链接是到洛谷的
→题目链接←
维护有多少坏掉的路灯的前缀和
然后对于每个sum[i]-sum[i-k]取max就好
代码:
#include<iostream>
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
int n,k,m;
int sum[100010];
bool f[100010];
int ans;
int main(){
scanf("%d%d%d",&n,&k,&m);
ans=m;
for(int i=0; i<m; i++){
int x;
scanf("%d",&x);
f[x]=true;
}
for(int i=1; i<=n; i++)sum[i]=sum[i-1]+f[i];
for(int i=k; i<=n; i++)ans=min(ans,sum[i]-sum[i-k]);
printf("%d\n",ans);
return 0;
}
bzoj没有题面....
链接是到洛谷的