poj 1328 贪心
2012-04-01 10:21
387 查看
贪心。以每个岛屿为圆心,在x轴上求出雷达可能出现的区间,重叠的区间只用一个雷达
#include <iostream> #include <algorithm> #include <cmath> #include <stdio.h> using namespace std; typedef double ll; const int maxx=1000; struct PO { ll l,r; }; PO point[maxx+5]; bool cmp(PO a,PO b) { if(a.l==b.l) return a.r<b.r; return a.l<b.l; } int main() { int n,i,d,cnt,tt=0,flag; ll a,b,ll,rr,temp1,temp2; //freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&d)!=EOF) { if(n==0 && d==0) break; temp1=(d*1.0)*(d*1.0); flag=0; for(i=0;i<n;i++) { scanf("%lf%lf",&a,&b); temp2=b*b; if(d-b<0) flag=1; if(flag) continue; point[i].l=a-sqrt((temp1-temp2)*1.0); point[i].r=a+sqrt((temp1-temp2)*1.0); } if(flag){printf("Case %d: -1\n",++tt);continue;} sort(point,point+n,cmp); ll=point[0].l; rr=point[0].r; cnt=1; for(i=1;i<n;i++) { if(rr<point[i].l) { cnt++; rr=point[i].r; ll=point[i].l; } else if(rr>=point[i].l && rr<=point[i].r) ll=point[i].l; else{ll=point[i].l;rr=point[i].r;} } printf("Case %d: %d\n",++tt,cnt); } return 0; }
相关文章推荐
- POJ 1328:Radar Installation 经典贪心
- poj 1328 贪心
- POJ 1328 Radar Installation(贪心)
- POJ 1328 - Radar Installation(贪心)
- POJ 1328 Radar Installation 贪心
- POJ 1328 贪心
- POJ 1328 Radar Installation(贪心)
- POJ_1328_Radar Installation_贪心
- POJ 1328 Radar Installation【贪心】
- POJ 1328 Radar Installation 雷达安装 贪心问题求解
- poj 1328 Radar Installation【贪心】【刷题计划】
- poj 1328 贪心 转化
- POJ1328 Radar Installation(贪心)
- poj 1328 Radar Installation (逆思维+贪心)
- poj 1328 Radar Installation_贪心
- POJ 1328 Radar Installation(贪心+区间覆盖)
- poj 1328 贪心 水题
- Poj 1328 贪心
- POJ-1328 Radar Installation 贪心
- poj 1328 贪心