UVA 10382
2013-01-03 16:53
183 查看
//为什么要按左边界进行排序,贪心 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; struct Node{ double l,r; }; Node water[10005]; int n,l,w; int cmp(Node a,Node b){ return a.l<b.l; } int main(){ double p,r; double len; while(scanf("%d%d%d",&n,&l,&w)!=EOF){ int num=0; for(int i=0;i<n;i++){ scanf("%lf%lf",&p,&r); if(r>w*1.0/2){ len=sqrt(r*r*1.0-w*w*1.0/4); water[num].l=p-len; water[num++].r=p+len; } } sort(water,water+num,cmp); int res=0; double left=0,right=0; int i; //用来标记 bool flag=false; for(i=0;i<num;i++){ int j=i; //每次寻找小于左边界的,且右边界最大的值 while(j<num&&water[j].l<=left){ if(right<water[j].r) right=water[j].r; j++; } if(j==i) break; ++res; left=right; i=j-1; if(left>=l){ flag=true; break; } } if(!flag) printf("-1\n"); else printf("%d\n",res); } return 0; }
相关文章推荐
- uva 10382(贪心)
- uva 10382 - Watering Grass(区域覆盖问题)
- uva 10382 Watering Grass
- UVa 10382 Watering Grass
- UVA - 10382 Watering Grass 贪心(几何)
- UVA - 10382 Watering Grass 贪心+区间覆盖
- UVa 10382 - Watering Grass(贪心算法)
- UVa 10382 Watering Grass (贪心&pair使用技巧)
- UVA 10382 贪心(区间覆盖)
- uva 10382 Watering Grass
- UVA 10382 - Watering Grass 贪心
- uva 10382 - Watering Grass
- UVA 10382喷水设施
- uva 10382 Watering Grass
- uva 10382 - Watering Grass
- UVA 10382
- UVA 10382 - Watering Grass 贪心
- UVA 10382 Watering Grass
- uva 10382 - Watering Grass(贪心)
- Uva 10382 贪心