POJ 3069(贪心)

摘自挑战程序设计竞赛

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <cstring>
 5 #include <algorithm>
 6 #include <queue>
 7 #include <stack>
 8 #include <vector>
 9 using namespace std;
10 int main(int argc, char *argv[])
11 {
12     int l,n,a[1010],b[1010],ans;
13     while(scanf("%d%d",&l,&n)!=EOF)
14     {
15         if(l==-1&&n==-1)
16         break;
17         for(int i=0;i<n;i++)
18         {
19             scanf("%d",&a[i]);
20         }
21         sort(a,a+n);
22         int i=0,ans=0;
23         while(i<n)
24         {
25             int s=a[i++];//s是没有被覆盖的最左的点的位置 
26             while(i<n&&a[i]<=s+l)//一直向右前进直到距s的距离大于L 的点 
27             i++;
28             int p=a[i-1];//p是新加上标记点的位置 
29             while(i<n&&a[i]<=p+l)//一直向右前进直到距p的距离大于L的点 
30             i++;
31             ans++;
32         } 
33         printf("%d\n",ans);
34     }    
35 }

猜你喜欢

转载自www.cnblogs.com/huluxin/p/9618295.html
今日推荐