https://vjudge.net/problem/POJ-3069
给定一些m个点,可以找某些点染色,染色后可以覆盖的距离为n,
问你最少染几个色,可以把所有的点都给覆盖掉。
贪心思路特别好想,每次都尽量往右。直接遍历就行。
但是我没想到代码怎么写,果然码力不行啊
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=2000;
int main()
{ int m,n;
int a[maxn];
while(~scanf("%d%d",&m,&n)){
if(m==-1&&n==-1) break;
int ans=0;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
int i=0;
while(i<n){
int s=a[i++];
while(i<n&&a[i]<=s+m) i++;
int p=a[i-1];
while(i<n&&a[i]<=p+m)i++;
ans++;
}
printf("%d\n",ans);
}
return 0;
}