题意: 
      有一个二维坐标,y>0是海,y<=0是陆地,然后只能在y=0的岸边上放雷达,有n个城市需要被监控,问最少放多少个雷达。

思路:

      贪心去做就行了,其实题目不难但是这个题目过的并不怎么顺利,哎!,一开始我的想法是按照x排序,然后从左往右一个一个放置雷达,第一个放在第一个点相切的右侧,....结果果断wa了,然后就又想到可以求出每个城市的可放置区间,然后去贪心,还是wa了,原因是排序的时候还是按照x从小到大排序的,后来看了讨论区一眼,才把排序是按照左区间排序的,一开始隐约考虑过这个,但是感觉按照x排没有错(一开始的想法),还有就是这个题目的数据比较坑人,要考虑d是负数或者y是负数的情况,如果全面的想,d是负数的话,如果所有的y都<=0那么输出0,否则就输出-1,如果y有大于0的,同时最大的y比b大,那么就输出-1,然后就是正常贪心,贪心的时候遇到y<0的点直接跳过去不考虑,有点小坑啊,不过是一个不错的简单题。


#include<math.h>
#include<stdio.h>
#include<string.h>
#include<algorithm>#define N 1000 + 10using namespace std;typedef struct
{double l ,r;int id;
}REG;REG reg[N];
int mark[N];bool camp(REG a ,REG b)
{return a.l < b.l;
}double minn(double x ,double y)
{return x < y ? x : y;
}double maxx(double x ,double y)
{return x > y ? x : y;
}int main ()
{int n ,l ,i ,d ,x ,y ,cas = 1;while(~scanf("%d %d" ,&n ,&d) && n + d){int jude1 = 0 ,jude2 = 0;memset(mark ,0 ,sizeof(mark));for(i = 1 ;i <= n ;i ++){scanf("%d %d" ,&x ,&y);if(y > 0) jude1 = 1;if(y > d) jude2 = 1;reg[i].l = x - sqrt(d * d * 1.0 - y * y * 1.0);reg[i].r = x + sqrt(d * d * 1.0 - y * y * 1.0);reg[i].id = i;if(y <= 0) mark[i] = 1;}printf("Case %d: " ,cas ++);if(!jude1){printf("0\n");continue;}if(jude2){printf("-1\n");continue;}double nowxl ,nowxr;int ansSum = 0;sort(reg + 1 ,reg + n + 1 ,camp);for(i = 1 ;i <= n; ++i){if(mark[reg[i].id]) continue;if(i == 1 || reg[i].l > nowxr){ansSum ++;nowxl = reg[i].l;nowxr = reg[i].r;}else{nowxl = maxx(nowxl ,reg[i].l);nowxr = minn(nowxr ,reg[i].r);}}printf("%d\n" ,ansSum);}return 0;
}

POJ1328贪心放雷达相关推荐

  1. 【贪心】雷达装置(ybtoj 贪心-1-2)

    雷达装置 ybtoj 贪心-1-2 题目大意 在平面直角坐标系中有n个点,现在让你在x轴上布置雷达,雷达可以的侦查半径为d,问你最少布置多少个雷达 输入样例 3 2 1 2 -3 1 2 1 输出样例 ...

  2. 《挑战程序设计竞赛》--初级篇习题POJ部分【穷竭搜索+贪心】

    最近看了<挑战程序设计竞赛>初级篇,这里总结一下部分poj上的练习题,主要涉及方面为: 穷竭搜索 and 贪心算法 具体题目: 简单导航 一.穷竭搜索 二.贪心算法 一.穷竭搜索 穷竭搜索 ...

  3. CodeForces - 1370E Binary Subsequence Rotation(思维)

    题目链接:点击查看 题目大意:给出一个只由 0 或 1 组成的字符串 s ,和一个字符串 t ,问 s 至少需要操作多少次,才能变为 t,每次操作是:可以选择字符串 s 中的一个子序列,使得他们全部向 ...

  4. codeforces contest 1119

    CF 1119 A 题目大意:给一个数组aia_iai​,求最大的i−ji-ji−j使得ai≠aja_i\neq a_jai​̸​=aj​,输出这个i−ji-ji−j的值 题解: 这题可以做到O(n) ...

  5. CSP-S集训刷题记录

    $ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...

  6. 2017.3.3 双栈排序 失败总结

    这道题虽然是noip的题,但还是很能反映你思维水平的. 说出来二分图.黑白染色对于一个oier来说肯定不陌生,有的人很快就能说出做法,写出程序. 但是一出成题怎么就不会了呢? 其实主要失误在于 我是站 ...

  7. NOI2020 瞎逛游记

    NOI2020 游记 我是 BJ D 类,没实力的氪金选手. Day -2 APIO 炸沉,此处略去不计. 下午 Mr_Wu 讲二分图讲得天花乱坠,体验极其欠佳,但是仍然学到很多. Day -1 报道 ...

  8. 2018华为软挑--模拟退火+FF解决装箱问题【C++代码】

    算法简介: 装箱问题是一个NP完全问题,求解全局最优解有很多种方法:遗传算法.禁忌搜索算法.蚁群算法.模拟退火算法等等,本次使用模拟退火,它的优点是在参数合适的情况下基本上可以100%得到全局最优解, ...

  9. Codeforces911题解

    A. Nearest Minimums You are given an array of n integer numbers a0, a1, -, an - 1. Find the distance ...

最新文章

  1. 你已经是个成熟的表格,该学会NLP了
  2. SAP 画皮门 从白狐到超人的华丽转身
  3. c语言 五子棋 悔棋代码,跪求C语言五子棋悔棋部分实现
  4. 机房收费系统重构(五)—登陆窗口完整版
  5. json 序列化 java_Java JSON序列化杂谈
  6. Django之管理权限
  7. 前端中实时显示当前时间的js代码
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的线上电器商城
  9. 删除了几个月的照片能找回么_手机删除的照片如何恢复?一招教你解决
  10. 【报告分享】2020年中国人工智能商业落地研究报告.pdf(附下载链接)
  11. 网奇iwms插件之“我浏览过的文章”
  12. 主板rgb接口是什么_什么是主板?
  13. linux gpt转mbr命令,linux GPT转mbr
  14. eslint 修改standard规则
  15. 基于SBO程序开发框架的实例:仓库扩展属性设置
  16. opencv之重映射remap
  17. Disastrous Downtime
  18. 颜值高的游戏键盘—HyperX Alloy Origins 60 霓虹粉游戏机械键盘
  19. 另一程序正在使用此文件,进程无法访问
  20. Centos中安装kenlm

热门文章

  1. gcc 5.2.0 编译安装笔记-20151110
  2. jquery隐藏或者显示一个元素
  3. Binary Search O(log n) algorithm to find duplicate in sequential list?
  4. Linux 的性能进行监测
  5. JavaScript对象理解
  6. 编写优秀Bug报告的艺术 ----转载自CSDN(imlogic的专栏)
  7. 某石油公司100-500人办公网络方案设计
  8. Ubuntu ADSL 拨号上网时断时续问题
  9. ZedGraph在Asp.net中的应用
  10. 浏览器本地存储的使用