poj 3069 继续弱鸡的贪心
题意:给出指路石的范围,问最小需要几个指路石可以覆盖所有的军队。
题解:排序一遍,然后扫出起始区间和终止区间,就可以求出最小的覆盖数了
ac代码:
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; int main() { cin.sync_with_stdio(false); int n,m; int a[2001]; while(cin>>n>>m) { if(n==-1 && m==-1) break; for(int i=1;i<=m;i++) cin>>a[i]; sort(a+1,a+1+m); int ans=0; int flag=0;// 0->start 1->end int pos; int i=1; while(i<=m) { if(flag==0) { int temp=a[i]+n; // cout<<temp<<endl; while(a[i]<=temp) i++; i--; flag=1; ans++; } else { int temp=a[i]+n; while(a[i]<=temp) i++; flag=0; } } cout<<ans<<endl; } return 0; }