百练+贪心区间选点+最少点覆盖尽量多的区间
2018-01-01 21:42
393 查看
点击打开链接
//区间选点问题 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<string> #include<cstring> #include<string.h> #include<math.h> #include<algorithm> #define inf 0x3f3f3f3f #define LL long long using namespace std; struct node{ double left, right; }Arr[2005]; int x[2005],y[2005]; bool cmp(node a, node b) { if(a.right== b.right) return a.left > b.left; return a.right <b.right; } int main() { int i,j,n,d,num,flag,s=0; double z,p; while (scanf("%d %d",&n,&d)!=EOF) { if(n==0&&d==0) break; s++; flag=0; for(i=0;i<n;i++){ scanf("%d %d",&x[i],&y[i]); if(y[i]>d){ flag=1; } } if(flag){ printf("Case %d: -1\n",s); } else{ for(i=0;i<n;i++){ z=sqrt(d*d*1.0-y[i]*y[i]*1.0); Arr[i].left = (double)x[i]-z; Arr[i].right = (double)x[i]+z; } sort(Arr, Arr+n, cmp); num=0; p=-inf; for(i=0; i<n; i++){ if(Arr[i].left>p){ num++; p=Arr[i].right; } } printf("Case %d: %d\n",s,num); } } return 0; }
相关文章推荐
- POJ 1328 Radar Installation(贪心——最少区间选点覆盖)
- POJ 2376 Cleaning Shifts (贪心区间最少覆盖)
- tyvj 4757 Cleaning 用最少的线段覆盖全区间 贪心 小优化
- POJ 2437 Muddy Roads(贪心 最少固长线段覆盖区间)
- 贪心之区间覆盖问题(区间选点)
- ACMjava经典贪心区间问题,区间选点,不相交区间,区间覆盖
- nyoj 12 喷水装置(二)【贪心】+【区间完全覆盖覆盖】
- UVa - 1615 Highway 高速公路 贪心+区间选点 重庆一中高2018级竞赛班第五次测试 2016.7.26 Problem 1
- UVA 10382 - Watering Grass【贪心+区间覆盖问题+高精度】
- 贪心之区间选点
- 区间选点+区间覆盖
- 区间覆盖问题(贪心)
- NYOJ 12 喷水装置(二)【贪心+区间覆盖】
- UVA-1615 Highway (贪心,区间选点)
- POJ - 2376 Cleaning Shifts(区间覆盖/贪心)
- NYOJ Radar 贪心之区间选点问题
- POJ 1328 Radar Installation (贪心,区间选点问题)
- 南阳理工 贪心 287 区间选点
- uva 10148 Advertisement (贪心-区间选点)
- nyoj 710 外星人的供给站【贪心区间选点】