您的位置:首页 > 其它

D - Saruman's Army POJ - 3069

2017-05-09 00:23 351 查看

本题大意为:在一个数轴上给定n个点的横坐标,每个点能以R为半径作圆覆盖周围,问最少需要多少个点能使这些点全部被覆盖住!
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
typedef long long ll;
using namespace std;
int main()
{
int r,n;int a[1000+5];
while(cin>>r>>n&&r!=-1&&n!=-1){
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
a
=1111111111;
int k=0,h=0,ans=0;
for(int i=h;i<=n;i++){
if(a[i]-r<=a[k])
continue;
else{
for(int j=i;j<=n;j++){
if(a[j]-r>a[i-1]){
h=j-1; k=j; ans++;break;
}
}
}
}
cout<<ans<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: