poj1328 Radar Installation —— 贪心
题目链接:http://poj.org/problem?id=1328
题解:区间选点类的题目,求用最少的点以使得每个范围都有点存在。以每个点为圆心,r0为半径,作圆。在x轴上的弦即为雷达可放置的范围。这个范围可用勾股定理求得。记录每个点的范围,然后排序,贪心。
(由于不熟悉qsort的用法,折腾了一个小时。后来清晰了:qsort 的cmp是通过正负判断(但结构体又不是),而sort的cmp是通过对错判断,即0或1。所以qsort的cmp用‘-’(结构体除外),sort的cmp用‘<’和‘>’判断,决定以后用sort,要加上<algorithem> 和 std。
代码如下:
#include<cstdio>//poj 1328 贪心
#include<cmath>
#include<cstdlib>
#include<cstring> typedef struct
{
double l,r;
}edge, *E;
edge e[1010]; int cmp(const void *a, const void*b)
{
return ((E)a)->r > ((E)b)->r?1:-1;
} int solve(int n)
{
int sum = 1;
double brim = e[0].r;
for(int i = 1; i<n; i++)
{
if(brim<e[i].l)
{
brim = e[i].r;
sum ++;
}
}
return sum;
} int main()
{
int n,B,t = 0;
double r0,x,y,r;
while(scanf("%d %lf",&n,&r0) && (n||r0))
{
B = 1;
for(int i = 0; i<n; i++)
{
scanf("%lf %lf",&x,&y);
if(y>r0)
B = 0;
r = sqrt(r0*r0-y*y);
e[i].l = x - r;
e[i].r = x + r;
} if(B)
{
qsort(e,n,sizeof(e[0]),cmp);
printf("Case %d: %d\n",++t,solve(n));
}
else
printf("Case %d: -1\n",++t);
}
return 0;
}
poj1328 Radar Installation —— 贪心的更多相关文章
- POJ1328 Radar Installation(贪心)
		
题目链接. 题意: 给定一坐标系,要求将所有 x轴 上面的所有点,用圆心在 x轴, 半径为 d 的圆盖住.求最少使用圆的数量. 分析: 贪心. 首先把所有点 x 坐标排序, 对于每一个点,求出能够满足 ...
 - [POJ1328]Radar Installation
		
[POJ1328]Radar Installation 试题描述 Assume the coasting is an infinite straight line. Land is in one si ...
 - POJ--1328 Radar Installation(贪心 排序)
		
题目:Radar Installation 对于x轴上方的每个建筑 可以计算出x轴上一段区间可以包含这个点 所以就转化成 有多少个区间可以涵盖这所有的点 排序之后贪心一下就ok 用cin 好像一直t看 ...
 - POJ1328 Radar Installation 【贪心·区间选点】
		
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54593 Accepted: 12 ...
 - POJ 1328 Radar Installation 贪心 A
		
POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...
 - POJ1328——Radar Installation
		
Radar Installation Description Assume the coasting is an infinite straight line. Land is in one side ...
 - POJ1328 Radar Installation 解题报告
		
Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...
 - Radar Installation(贪心)
		
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56826 Accepted: 12 ...
 - Radar Installation 贪心
		
Language: Default Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 42 ...
 
随机推荐
- 转: java服务器端成长指南
			
from: http://m.blog.csdn.net/article/details?id=45797155 前言 这是一份针对新手的服务端开发入门与进阶指南.遇到问题及时问你的 mentor ...
 - tomcat内存、连接数优化
			
1.检測系统能够设置的内存大小 java -Xmx1024M -version(当中1024表示检測内存能否够调整到这个数) 2.设置tomcat内存 在tomcat_home/bin/catalin ...
 - 【Excle数据透视表】如何重命名数据透视表
			
如下图,是新生成的一个数据透视简表,现在需要将其数据透视表的名称修改为:汇总数据 解决办法 修改后的效果如下:
 - js执行顺序总结
			
参考博文:http://www.2cto.com/kf/201401/273825.html http://www.jb51.net/article/44123.htm http://zhidao.b ...
 - 动态PPT制作
			
今天开通的博客,希望以后能够和大家一起分享学习心得.今天也是第一次学习制作动态PPT. 如果想要做成flash那种效果,建议学习下<动画传奇>这本书. 做成flash效果,需要用到动画中的 ...
 - git 操作分支
			
1. git 查看本地分支:git branch 2. git 查看所有分支:git branch -a 3. git 新建本地分支:git branch branchName 4. git 新建分支 ...
 - 如何用openssl命令行生成证书
			
老大要我在web server里面加上https功能,可是但就使用openssl生成证书就耗费了我两天时间,网上有很多相关的资料,但是都写的很复杂, 照着他们的来,还是走了很多弯路. 我总结一下,步骤 ...
 - Android 自己定义ImageView实现圆角/圆形 附加OnTouchListener具体凝视以及Button圆角
			
转载请注明出处:王亟亟的大牛之路 平时要用一些非方方正正的button之类的小伙伴们是怎样实现的?RadioButton? ImageButton? 还是其它? 今天亟亟上的是ImageView来实现 ...
 - 自己定义ProgressDialog载入图片
			
使用系统载入框 mDialog = new ProgressDialog(this); mDialog.setCancelable(true);//能否够被取消 mDialog.setMessage( ...
 - java中类型的隐式转换
			
byte+byte=int,低级向高级是隐式类型转换,高级向低级必须强制类型转换,byte<char<short<int<long<float<double