poj 1328
来源:互联网 发布:淘宝怎么才能分期付款 编辑:程序博客网 时间:2024/06/14 20:25
贪心第一题。应该上来先把每个岛屿对应的海岸线范围求好,这样以后就只是加减运算比较方便,否则每次都要算乘方开方。注意无解的情况!不要忘了考虑当currentR >当前点的右界时的情况!
最后注意输入要读完再判断是否为-1,其实没读完也可以判断的。。。
#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <algorithm>#include <cmath>using namespace std;struct node{ double l; double r;};bool compare(struct node a,struct node b){ return a.l < b.l;}int main(){ int n,d; int count = 1; while(scanf("%d %d",&n,&d) == 2 && n != 0) { struct node nodes[1024]; memset(nodes,0,sizeof(nodes)); int i,flag = 0;; for(i = 0;i < n;++i) { int x,y; scanf("%d %d",&x,&y); if(d < y) { flag = 1; } nodes[i].l = x - sqrt(double(1.0 * d * d - y * y)); nodes[i].r = x + sqrt(double(1.0 * d * d - y * y)); } if(flag) { printf("Case %d: -1\n",count++); continue; } sort(&nodes[0],&nodes[n],compare); int radars = 1; double currentR = nodes[0].r; for(i = 1;i < n;++i) { if(currentR < nodes[i].l) { ++radars; currentR = nodes[i].r; } else if(currentR > nodes[i].r) currentR = nodes[i].r; } printf("Case %d: %d\n",count++,radars); } return 0;}
- poj 1083 & poj 1328
- POJ 1328
- poj 1328
- poj 1328
- POJ 1328
- poj 1328
- POJ 1328
- POJ 1328
- POJ--1328
- poj-1328
- POJ 1328
- POJ 1328
- poj 1328
- poj 1328
- POJ 1328
- POJ 1328
- POJ 1328
- poj 1328
- 解决submit提交的时候,先执行本地js代码的问题
- C++中std::tr1::function和bind 组件的使用
- 将一句话里的单词进行逆置,标点符号不逆置
- Linux下各种信号宏
- linux下查看和添加PATH环境变量
- poj 1328
- hdu 4339 query#线段树
- 寄:长期熬夜容易带来的8大健康问题
- Mahout初体验——配置+HelloWorld
- 拓扑排序
- 做交互应该知道的视觉几件事
- ubuntu 更新失败,以至于ubuntu 软件中心打不开的解决方法
- 我所经历的北京 我所看到的伦敦
- 拆迁楼房倒塌压中6间门店4人受伤