poj Saruman's Army

来源:互联网 发布:一共有多少种编程语言 编辑:程序博客网 时间:2024/06/06 09:43

题目链接http://poj.org/problem?id=3069


题目大意:一个魔法球能覆盖的范围为R,要求找出最少的魔法球个数来覆盖整个军队。但是要注意放置魔法球的位置必须是在输入的n个位置中 (“ palantir are not allowed to “free float” in mid-air”)比如R=10的时候1 7 15 20 要用两个球,一个放在7那里,另一个放在20那里,不能把球放在7和15中间来覆盖。


思路:先排序,然后在R范围内向最右边扩充,记录,然后以记录点再重复一次,就完成一次放置了。



一开始没审好题,以为1 7 15 20的时候可以用一个球覆盖完(放在7~15之间的10那里)后来才发现连案例都通不过        =-=!


#include<iostream>#include<algorithm>using namespace std;int d[1005];int main(){int r,n;while(scanf("%d%d",&r,&n),n!=-1&&r!=-1){int a=0;for(a=0;a<n;a++)scanf("%d",&d[a]);sort(d,d+n);int s,p,cns=0;a=0;while(a<n){s=d[a++];while(a<n&&d[a]<=s+r) a++;p=d[a-1];while(a<n&&d[a]<=p+r) a++;cns++;}printf("%d\n",cns);}return 0;}


之前一直在做poj的3190那道题,但是现在还没有做出来,o(︶︿︶)o 唉,先放下吧。望高人指教。


原创粉丝点击