题目链接:
题意:在一个矩形的花坛上,中间水平放了一排喷水装置,浇灌半径为r,问最少需要多少个装置可以润湿整个花坛。
将每个装置转换成一条线段,就变成了求最少的线段覆盖整个区间。
将各线段左端点从小到大排序
设已覆盖区间的右端点为ed
每次贪心选择起点小于ed的线段中右端点最大的那一条,然后更新ed。
1 #include2 using namespace std; 3 const int maxn=50010; 4 5 struct Seg{ 6 double x,y; 7 bool operator < (const Seg& a)const{ 8 return x 0){32 puts("0");33 continue;34 }35 int ans=0;36 double st=0,ed=0;37 for(int i=0;i =l) break;48 }49 if(ed>=l) printf("%d\n",ans);50 else puts("0");51 }52 }