博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1328 贪心+qsort
阅读量:6463 次
发布时间:2019-06-23

本文共 1458 字,大约阅读时间需要 4 分钟。

     昨天把贪心看了一下。开始进入贪心的学习。

/* * ===================================================================================== * *       Filename:  poj 1328     * *    Description:  贪心+qsort *           先用计算出要覆盖每个点所需要在x轴上的区间(关键是要理解这点,不懂的可以看看程序)。用Node结构体存储。 *           注意要用double.因为sqrt要求的是double.然后每次从右边开始判断(即找 *           最大可能,贪心)。要注意不能覆盖情况的处理。具体的看程序的注释吧。 * * *        Version:  1.0 *        Created:  2012/5/8 13:31:17 *       Revision:  none *       Compiler:  gcc * *         Author:  Jason Damon  *   Organization:  XD University * * ===================================================================================== */#include 
#include
#include
#include
#include
using namespace std;#define MAXN 1005struct Node{ double right,left;}node[MAXN];int cmp(const void *a,const void *b){ return ((Node*)a)->left>=((Node*)b)->left?1:-1;}int main(){ int i,n,d,x,y,id=0,cnt; double point,l; bool flag; freopen("in.txt","r",stdin); id=1; while(scanf("%d%d",&n,&d),n+d) { if(d<=0) { } flag=false; for(i=0; i
d) { flag=true; } l=sqrt(double(d*d-y*y)); //用于求能覆盖这点的圆的圆心区间 // 覆盖区间 node[i].left=x-l; node[i].right=x+l; } if(flag) { printf("Case %d: -1\n",id); id++; continue; } qsort(node,n,sizeof(Node),cmp); point=node[0].right;//取第一点的右端点 cnt=1; for(i=1; i
point) { cnt++; point=node[i].right; } else { if(node[i].right

 

转载地址:http://pthzo.baihongyu.com/

你可能感兴趣的文章
Samba日志分析
查看>>
[CTO札记]杂论架构
查看>>
Flash CS 6绘图技巧之锁定填充
查看>>
P2P网络“自由”穿越NAT的“秘密”
查看>>
【Hibernate框架开发之六】Annotation关系映射&组件映射!
查看>>
基于队列的线程池
查看>>
Exchange 2013防止数据丢失DLP预览
查看>>
cocos2d-x自制工具06:AnimatePacker源代码
查看>>
Bex5开发技巧之如何在列表中显示主键字段
查看>>
方法重写,隐藏在子类父类中的各种调用实践
查看>>
ubuntu mpi多机实践
查看>>
c# var的含义与用法
查看>>
Hyper-V3:虚拟机的配置
查看>>
matplotlib绑定到PyQt5(无菜单)
查看>>
卸载360企业版密码
查看>>
对于getting real开发结合自己的工作的一些思考
查看>>
【Android 基础】Android中全屏或者取消标题栏
查看>>
R语言学习笔记:分析学生的考试成绩
查看>>
uploadfy 常见问题收集
查看>>
WinForm控件开发总结(十)-----为属性设置默认值
查看>>