POJ3069:Saruman's Army
Posted EricJeffrey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ3069:Saruman's Army相关的知识,希望对你有一定的参考价值。
题目链接:http://poj.org/problem?id=3069
贪心
使用两个标志,一个边界点,一个当前比较点即可不断重复更新所需的点个数
挑战程序设计竞赛原文:
代码:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<memory.h> 5 #include<algorithm> 6 #define MAXN 1010 7 #define INF 0x3f3f3f 8 using namespace std; 9 10 int n,r; 11 int pos[1010]; 12 13 int main() 14 { 15 while(scanf("%d %d",&r,&n)&&(r>=0||n>=0)) 16 { 17 memset(pos,0,(MAXN-1)*sizeof(int)); 18 for(int i=1;i<=n;i++) 19 { 20 scanf("%d",&pos[i]); 21 } 22 pos[n+1]=INF; 23 sort(pos+1,pos+n+1); 24 int ans=0; 25 int initpos=pos[1]; 26 int boundpos=pos[1]; 27 for(int i=2;i<=n+1;i++) 28 { 29 if(pos[i]-boundpos<=r) 30 initpos=pos[i]; 31 else 32 { 33 if(pos[i]-initpos<=r) 34 continue; 35 else 36 { 37 ans++; 38 boundpos=pos[i]; 39 initpos=pos[i]; 40 } 41 } 42 } 43 printf("%d\\n",ans); 44 } 45 return 0; 46 }
以上是关于POJ3069:Saruman's Army的主要内容,如果未能解决你的问题,请参考以下文章