题目链接:http://poj.org/problem?id=3485

题意:X轴上公路从0到L,X轴上下有一些点给出坐标代表村庄,问在公路上最少建几个出口才能使每个村庄到出口的距离不超过D。

以村庄为圆心,半径为 d 画圆,与公路相交,得到一个一个区间,这么选点呢?

按照区间右端点排序,第一个点,选择第一条线段的右端点,当前位置就在这里,已经(很)靠后了,拿这个点去查看以后的线段,看是不是符合。

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <algorithm>
 4
 5 using namespace std;
 6
 7 const int maxn = 10005;
 8
 9 struct Point
10 {
11     double x,y;
12 } points[maxn];
13
14 struct Line
15 {
16     double x,y;
17 } lines[maxn];
18
19 bool cmp(Line a,Line b)
20 {
21     return a.y < b.y;
22 }
23
24 int main()
25 {
26     double s;
27     double d;
28     while(~scanf("%lf%lf",&s,&d))
29     {
30         int n;
31         scanf("%d",&n);
32         for(int i=0; i<n; i++)
33         {
34             scanf("%lf%lf",&points[i].x,&points[i].y);
35             lines[i].x = points[i].x - sqrt(d*d-points[i].y*points[i].y);
36             lines[i].y = points[i].x + sqrt(d*d-points[i].y*points[i].y);
37         }
38
39         sort(lines,lines+n,cmp);
40         int ans = 1;
41         double cur = lines[0].y;
42         for(int i=1; i<n; i++)
43         {
44             if(cur>=lines[i].x&&cur<=lines[i].y)
45                 continue;
46             else
47             {
48                 cur = lines[i].y;
49                 ans++;
50             }
51         }
52
53         printf("%d\n",ans);
54     }
55     return 0;
56 }

View Code

转载于:https://www.cnblogs.com/TreeDream/p/6636667.html

poj 3485 区间选点相关推荐

  1. 【贪心策略】区间选点问题

    问题描述: Description You are given n closed, integer intervals [ai, bi] and n integers c1,-, cn. Write ...

  2. NYOJ 287 Radar 贪心之 区间选点

    Radar 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 Assume the coasting is an infinite straight line. Land ...

  3. 贪心法——区间选点问题

    贪心法--区间选点问题 区间选点问题.数轴上有nn个闭区间[ai,bi][a_i, b_i].取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个). 贪心思想:先按bb从小到大进 ...

  4. 【贪心】AcWing 803. 区间选点

    905. 区间选点 文章目录 题目描述 输入格式: 输出格式: 数据范围 输入样例 输出样例 方法:贪心 解题思路 代码 复杂度分析: 题目描述 给定 N 个闭区间 [ a i , b i ] [a_ ...

  5. 贪心算法——区间选点问题

    转载:https://blog.csdn.net/xia842655187/article/details/51944763 区间选点的问题大致可以描述为:  给定N个区间[a,b],取尽量少的点,使 ...

  6. 【48. 贪心(区间选点)】

    区间选点与最大不相交区间数量代码一样 思路 将每个区间按照右端点从小到大进行排序 从前往后枚举区间,end值初始化为无穷小 如果本次区间不能覆盖掉上次区间的右端点, ed < range[i]. ...

  7. [AcWing] 905. 区间选点(C++实现)贪心---区间问题例题

    [AcWing] 905. 区间选点(C++实现)贪心---区间问题例题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. ...

  8. acwing 905 区间问题-区间选点

    Acwing 905. 区间选点 题目描述 给定 N 个闭区间 [ai,bi] ,请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点. 输出选择的点的最小数量. 位于区间端点上的点也算作区 ...

  9. 简单区间问题 选择不相交区间 区间选点 区间覆盖问题解答及代码 C++

    1. 选择不相交区间 数轴上有n个开区间 ( a i , b i ) (a_i, b_i) (ai​,bi​).选择尽量多个区间,使得这些区间没有公共点. 这是最简单的区间问题,很多区间问题都需要先排 ...

最新文章

  1. [设计模式随意链接]——命令模式
  2. Python 笔试集(2):你不知道的 Python 整数
  3. java 事件驱动 netty_Netty2-事件驱动的NIO框架(使用范例)
  4. Redis源码:朴实无华且枯燥
  5. 【Leetcode | 11】268. 缺失数字
  6. centOs 7.2*64 ECS nginx安装教程
  7. python编写一个函数判断一个数是否为素数是则返回yes_编写函数isPrime,判断一个数字是否为素数,是则返回字符串 YES ,否则返回字符串 NO 。_学小易找答案...
  8. BUUCTF Web [GXYCTF2019]Ping Ping Ping
  9. 动真格!阿里云刚说缺 5000 程序员,今天就来抢人!
  10. hadoop2.9.2安装hadoop_pid_dir_Hadoop3.2 +Spark3.0全分布式安装
  11. php包含大马执行,对于某个PHP大马的分析
  12. 【信号检测】基于matlab双稳随机共振微弱信号检测【含Matlab源码 1701期】
  13. java kaptcha,java验证码组件kaptcha使用方法
  14. 计算机网络路由器的配置连接不上,路由器安装设置好后电脑还是不能上网解决办法...
  15. 快手公布于香港联交所主板上市计划详情,拟融资394.77亿港元
  16. Axure rp9 中继器新建表格
  17. FCAA答题练习收集记录
  18. nexus在docker安装nexus与初始密码问题
  19. pytorch——VGG网络搭建
  20. 如何为Exchange 2010 用户添加联系人头像

热门文章

  1. 报错curl: (7) Failed to connect to 127.0.0.1 port xxxx: Connection refused
  2. LeetCode 2095. 删除链表的中间节点(快慢指针)
  3. fastapi 模式的额外信息,示例 / Cookie参数 / Header参数
  4. LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)
  5. 程序员面试金典 - 面试题 16.17. 连续数列(DP/分治)
  6. 程序员面试金典 - 面试题 04.03. 特定深度节点链表(BFS)
  7. LeetCode 70. 爬楼梯(动态规划)
  8. python3之批量修改文件名称
  9. python分段函数图像画法_我想用Python matplotlib 画一个这样类似的图像,需要用到分段函数。大佬帮帮这个小弟?...
  10. 用python生成云词汇_用python生成词云wordcloud