//(贪心)大意:有N个点,每个点必须被覆盖,一个标记点可覆盖周围R的点,最少标记多少点?
//注意:POJ不吃<bits/stdc++.h>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[1050],r;
while(scanf("%d %d",&r,&n)!=EOF&&(n!=-1||r!=-1))
{
int i=0,ans=0,s=0;
for(int i=0; i<n; i++)
{
cin>>a[i];
}
sort(a,a+n);
while(i<n)
{
int p=a[i++];
while(i<n&&a[i]<=p+r)
i++;
s=a[i-1];
ans++;
while(i<n&&a[i]<=s+r)
i++;
}
cout<<ans<<endl;
}
}
【简单贪心】POJ 3069-Saruman's Army
最新推荐文章于 2024-07-24 12:43:07 发布