poj 1328 贪心
2016-07-07 07:58
429 查看
/* 贪心.... 处理处每个点按照最大距离在x轴上的映射 然后我们就有了一些线段 目的是选取尽量少的点 使得每个线段内都有点出现 我们按照左端点排序 然后逐一处理 假设第一个雷达安在第一个线段的右端点 若下一条与之无交点 则再按一个雷达 若完全覆盖 贪心的 我们把雷达移动到下一条的右端点 这样这个雷达就又多覆盖了一个岛 */ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define maxn 1010 using namespace std; int n,ans,cas; double d,x,y; struct node { double l,r; }p[maxn]; int cmp(const node &a,const node &b) { if(a.l==b.l)return a.r<b.r; return a.l<b.l; } int main() { while(1) { ans=1;int falg=0; scanf("%d%lf",&n,&d); if(n==0&&d==0)break; for(int i=1;i<=n;i++) { scanf("%lf%lf",&x,&y); if(y>d)falg=1; p[i].l=x-sqrt(d*d-y*y); p[i].r=x+sqrt(d*d-y*y); } if(falg){printf("Case %d: -1\n",++cas);continue; sort(p+1,p+1+n,cmp); double t=p[1].r; for(int i=2;i<=n;i++) { if(p[i].l>t) { ans++;t=p[i].r;continue; } if(p[i].r<=t) { t=p[i].r;continue; } if(p[i].r>t)continue; } printf("Case %d: %d\n",++cas,ans); } return 0; }
相关文章推荐
- 1029. 旧键盘(20)
- acm课题总结
- 微信紧急上线“城市积水上报”功能应对南方持续暴雨
- reflect 机制
- datagridview的网格线如何隐藏
- Agri-Net_usaco3.1.1_poj1258_最小生成树
- ACM第四次练习—1013
- codeforces 86 D Powerful array
- Android sdk content loader 0%的解决方案:
- linux程序管理4 编译安装
- 169. Majority Element
- 一起学微软Power BI系列-官方文档-入门指南(4)Power BI的可视化
- Winbuntu,Win 10 的 Ubuntu 运行环境
- 牛顿法求平方根
- 5h2w
- PAT 1020. 月饼 (25)
- Problem4-1018
- android 监控应用进程
- EventBus 3.0源码解析
- ******Eclipse 快捷键******