poj 1328 Radar Installation 贪心
2015-10-24 17:14
337 查看
老规矩,链接思密达http://poj.org/problem?id=1328
典型贪心
主要有三个问题
1.sort函数里加的n不能是int外的类型,完全没碰到过这么wa的
2.结构体的cmp函数,<是升序,>是降序
3.没考虑到一个特殊情况,就是下一个区间如果右点小于上一个的右点要更新公共右点,下面代码
c++交,g++有毒
典型贪心
主要有三个问题
1.sort函数里加的n不能是int外的类型,完全没碰到过这么wa的
2.结构体的cmp函数,<是升序,>是降序
3.没考虑到一个特殊情况,就是下一个区间如果右点小于上一个的右点要更新公共右点,下面代码
#include <iostream> #include <cmath> #include <algorithm> using namespace std; struct qujian { double left; double right; }dao[1005]; bool cmp(qujian a,qujian b){ return a.left<b.left; }//升序排列 int main() { double d,flag,y,x,chang,num,comright,m; int b,n; while(cin>>n>>d&&(n!=0||d!=0)) { num=1; m++; flag=1; if(d==0) flag=0; for(int i=0;i<n;i++) { cin>>x>>y; chang=sqrt(d*d-y*y); dao[i].left=x-chang; dao[i].right=x+chang; if(y>d) flag=0; } if(flag==0) { cout<<"Case "<<m<<": "<<-1<<endl; continue; } else if(n==0) { cout<<"Case "<<m<<": "<<0<<endl; continue; } sort(dao,dao+n,cmp); comright=dao[0].right; for(b=1;b<n;b++) { if(dao[b].left>comright) { num++; comright=dao[b].right; } else { if(dao[b].right<=comright) comright=dao[b].right; } } cout<<"Case "<<m<<": "<<num<<endl; } return 0; }
c++交,g++有毒
相关文章推荐
- windows7和ubuntu双系统的引导问题解决!
- C++ STL中的vector
- SAP FI模块与SD、MM的接口配置基本方法
- Java-HttpSession监听
- Java-HttpSession监听
- container_of()宏
- String。equals()用法
- windows下调试virtualbox的虚拟机串口
- 未来的布局主流 display:flex;
- 软件工程
- 进程的简单介绍
- Nginx+Tomcat+Memcached 集群Session共享[memcached服务安装、tomcat使用memcache存储session、nginx安装配置实现tomcat负载均衡]
- HTTP协议学习
- 分数转换-水晕
- MFC编辑框自动滚动到最后一行
- 设计模式》六大原则之一:开闭原则
- python装饰实现线程同步
- 柯南《业火的向日葵》观影归来 - 不涉及剧透
- 我想转行
- Java中的private、protected、public和default的区别