poj1328 贪心算法
来源:互联网 发布:3dmax烘焙导入unity3d 编辑:程序博客网 时间:2024/06/04 23:21
原题目:http://poj.org/problem?id=1328
贪心策略:尽可能一个卫星可以覆盖更多的岛屿。
计算出所有岛屿的雷达所在的区间,得到一个区间数组。
我们将这个数组按照区间左部分进行排序,那么重叠部分就表明这些岛屿的雷达可以共用一个。从而计算出最终解。
#include<cstdio>#include<math.h>#include<cstring>int kase=0;const int maxn=1000+5;int main(){int n,d;int x,y;int num;int flag;float xl[maxn],xr[maxn],temp,R,L;while((scanf("%d %d",&n,&d))==2&&n&&d){flag=0; num=0; kase++;for(int i=0;i<n;i++){scanf("%d %d",&x,&y);if(y>d)flag=1;xl[i]=x-sqrt((float)d*d-y*y);xr[i]=x+sqrt((float)d*d-y*y);}/*for(int i=0;i<n;i++){printf("%f %f\n",xl[i],xr[i]);}printf("\n");*/for(int i=0;i<n-1;i++){for(int j=0;j<n-1-i;j++){if(xl[j]>xl[j+1]){ temp=xl[j]; xl[j]=xl[j+1]; xl[j+1]=temp; temp=xr[j]; xr[j]=xr[j+1]; xr[j+1]=temp;}}}/*for(int i=0;i<n;i++){printf("%f %f\n",xl[i],xr[i]);}*/L=xl[0];R=xr[0];num=1;for(int i=1;i<n;i++){if(xl[i]<=R){if(xr[i]<R){R=xr[i];}}if(xl[i]>R){num++;R=xr[i];}}if(flag==1){printf("Case %d: -1\n",kase);}else{printf("Case %d: %d\n",kase,num);}getchar();}}
0 0
- 贪心算法 | Poj1328
- POJ1328贪心算法
- poj1328 贪心算法
- POJ1328 贪心算法
- poj1328/2109/2586 贪心算法
- POJ1328 -- 贪心算法和快速排序
- POJ1328---Radar Installation(贪心算法)
- POJ1328贪心
- POJ1328--贪心
- poj1328(贪心)
- poj1328 贪心
- poj1328 贪心
- poj1328 贪心
- poj1328贪心
- POJ1328(贪心)
- poj1328贪心
- poj1328 贪心
- POJ1328 贪心
- JavaWeb项目入门
- MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
- python类的类属性与实例属性
- Velocity.js2
- hdu 4027 Can you answer these queries? (线段树)
- poj1328 贪心算法
- C++模板&二段式名字查找
- 2016 icectf dear_diary wp
- 问题整理
- MySQL学习笔记(二)
- jquery-从Table导出Excel
- JHPickView — 一款灵活的选择器
- DrawerLayout Drawer 内容显示在statusbar之下的方法
- 【Summary】——>Web组·Week6