首页 > 代码库 > POJ3069:Saruman's Army
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。