poj1328
来源:互联网 发布:spine导入到unity3d 编辑:程序博客网 时间:2024/05/22 01:47
贪心
注意:
1.数据类型
2.输入的海岛,按照横坐标排序。求出对于每个海岛来说,其安装雷达的左右区间。贪心,雷达安装位置初始值为right[0],若下一海岛的左端点在该位置右边,则需要再安装新的雷达,若下一海岛的左端点在该位置右边,则需要看右端点。若右端点在该雷达的左边,则更新当前雷达位置为该右端点,若在该雷达的右边,则不变。
3.两组测试数据
2 5
-6 3
-3 4
2 5
-6 3
-3 5
注意:
1.数据类型
2.输入的海岛,按照横坐标排序。求出对于每个海岛来说,其安装雷达的左右区间。贪心,雷达安装位置初始值为right[0],若下一海岛的左端点在该位置右边,则需要再安装新的雷达,若下一海岛的左端点在该位置右边,则需要看右端点。若右端点在该雷达的左边,则更新当前雷达位置为该右端点,若在该雷达的右边,则不变。
3.两组测试数据
2 5
-6 3
-3 4
2 5
-6 3
-3 5
代码:
#include<iostream>#include<math.h>using namespace std;int main(){ int i,j,num,count=1; double x[1000],y[1000],left[1000],right[1000]; double r,temp; while(1) { cin>>num>>r; if(num==0&&r==0) break; bool flag=false; for(i=0;i<num;i++) { cin>>x[i]>>y[i]; if(y[i]>r) flag=true; } //失败的情况 if(flag) { cout<<"Case "<<count++<<": -1"<<endl; continue; } //冒泡排序 x值从小到大 for(i=0;i<num-1;i++) for(j=0;j<num-i-1;j++) { if(x[j]>x[j+1]) { temp=x[j]; x[j]=x[j+1]; x[j+1]=temp; temp=y[j]; y[j]=y[j+1]; y[j+1]=temp; } } //对于每个海岛,雷达安装位置的区间为:left[i]~right[i] for(i=0;i<num;i++) { left[i]=x[i]-sqrt(r*r-y[i]*y[i]); right[i]=x[i]+sqrt(r*r-y[i]*y[i]); } temp=right[0]; int radar=1; for(i=0;i<num-1;i++) { if(left[i+1]>temp) { temp=right[i+1]; radar++; } else if(right[i+1]<temp) temp=right[i+1]; } cout<<"Case "<<count++<<": "<<radar<<endl; } return 0;}
0 0
- POJ1328
- poj1328
- POJ1328
- poj1328
- POJ1328
- poj1328
- poj1328
- poj1328
- poj1328
- poj1328
- poj1328
- poj1328
- poj1328
- POJ1328
- POJ1328
- POJ1328
- poj1328
- POJ1328
- uva 10821 - Constructing BST(BSF)
- Java - 网络编程 - TCP
- C语言中的宏定义
- 看到Matrix67博客矩阵迭代分形,感觉不错
- HDU 1536 - S-Nim(SG)
- poj1328
- 关于AndroidManifest.xml开发中使用系统权限报错的问题
- leetcode面试题1:Reverse Words in a String
- HDU5014:Number Sequence
- IOS 推送功能的实现
- 算法排序之邻居好说话--冒泡排序(Bubble Sort)
- mysql 重复字段查询及排除重复值
- Eclipse报错:due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar
- 程序员面试宝典部分习题