喷水装置(二)

时间限制:3000 ms  |  内存限制:65535 KB
难度:4

描写叙述
有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每一个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪所有润湿。

输入
第一行输入一个正整数N表示共同拥有n次測试数据。
每一组測试数据的第一行有三个整数n,w,h,n表示共同拥有n个喷水装置,w表示草坪的横向长度。h表示草坪的纵向长度。
随后的n行。都有两个整数xi和ri,xi表示第i个喷水装置的的横坐标(最左边为0),ri表示该喷水装置能覆盖的圆的半径。
输出
每组測试数据输出一个正整数,表示共须要多少个喷水装置。每一个输出单独占一行。

假设不存在一种可以把整个草坪湿润的方案。请输出0。

例子输入
2
2 8 6
1 1
4 5
2 10 6
4 5
6 5
例子输出
1
2
来源
《算法艺术与信息学竞赛》

贪心解决这个问题

#include"stdio.h"
#include"math.h"
#include"stdlib.h"
#define N 100005
struct node
{double l,r;     //记录每一个水龙头能灌溉的左右边界
}f[N];
int cmp(const void*a,const void*b)
{return (*(struct node*)a).l<(*(struct node*)b).l?-1:1;
}
int main()
{int t,n,i,j;double w,h,x,r;scanf("%d",&t);while(t--){scanf("%d%lf%lf",&n,&w,&h);h/=2;for(i=0,j=0;i<n;i++){scanf("%lf%lf",&x,&r);if(r<h)          //半径太小continue;double d=sqrt(r*r-h*h);f[j].l=x-d;f[j++].r=x+d;}n=j;qsort(f,n,sizeof(f[0]),cmp);double rr=0,cur;int cnt=1;for(i=0;i<n;i++)   //从0点取最右边的那个喷水装置{if(f[i].l>0)break;if(rr<f[i].r)rr=f[i].r;}if(rr==0){printf("0\n");continue;}  for(cur=0;i<n;i++){if(rr>=w)  break;if(f[i].l<=rr)     //从交叉地方取一个最右边的那个喷水装置{if(f[i].r>cur)cur=f[i].r;}if(f[i].l>rr){if(f[i].l>cur){cnt=0;break;}else{cnt++;rr=cur;cur=0;}}}if(rr<w)  //最后特殊处理边界点  {if(cur<w)cnt=0;elsecnt++;}printf("%d\n",cnt);}return 0;
}

转载于:https://www.cnblogs.com/yxwkf/p/5086778.html

NYOJ 12 喷水装置(二)相关推荐

  1. 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...

    1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...

  2. 小米笔记本 12.4 二合一 评测

    屏幕方面,这块 12.4 英寸 IPS LCD 触摸屏还是可圈可点的,分辨率为 2,560 x 1,600 像素,峰值亮度为 500 尼特,100% DCI-P3 色域,覆盖了一层康宁大猩猩玻璃. 这 ...

  3. 【新书推荐】【2019.12】二十一世纪的人工智能(第三版)

    [2019.12]二十一世纪的人工智能(第三版)Artificial Intelligence in the 21st Century 3rd Edition,共750页. 如果需要电子版,请联系QQ ...

  4. 贪心算法之——喷水装置二(nyoj12)

    题目描述: 喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000) ...

  5. NYOJ 6 喷水装置(一) 贪心算法 之 区间覆盖问题

    喷水装置(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为 ...

  6. 空间谱专题12:二维测向的基本方法

    作者:桂. 时间:2017-10-01  16:50:08 链接:http://www.cnblogs.com/xingshansi/p/7617442.html 前言 圆阵.面阵.L阵.十字阵.V形 ...

  7. NYOJ 6 喷水装置(一)

    喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心 ...

  8. 【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)

    文章目录 前言 一.桥接模式(Bridge Pattern) 二.使用步骤 角色 示例 总结 优点 缺点 使用场景 前言 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分 ...

  9. nyoj 12(区间覆盖)

    贪心策略是将左端点从小到大排序,选择右端点,使得右端点尽量覆盖的最远 AC: #include<stdio.h> #include<algorithm> #include< ...

最新文章

  1. webToImage (网页转图片)模块试用分享
  2. qt 拖拽 修改大小
  3. SAP ABAP bcset激活时,关联的数据库表条目是如何插入的
  4. HDOJ 2199 HDU 2199 Can you solve this equation? ACM 2199 IN HDU
  5. Redis数据结构——跳跃表-skiplist
  6. ubuntu下mysql整个数据库备份与还原
  7. 如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...
  8. PAT Java 返回非零 的原因 OJ
  9. FHQ Treap摘要
  10. 如何为我们的程序编写开发文档——Java文档注释
  11. fiddler4+雷电模拟器4.0.82抓包设置
  12. 拓扑排序算法原理及Java代码实现
  13. 工程师高级职称计算机考试成绩查询,高级工程师职称查询
  14. windows10升级助手_Win7即将全面停更,看这里,决定回退还是升级?
  15. python中fact_python中fact函数使用
  16. Re-ID Driven Localization Refinement for Person Search
  17. python单位根检验平稳性怎么看是否平稳_Python ADF 单位根检验 如何查看结果的实现...
  18. 学生机房随堂测试软件,全智能考试系统——随堂评测考试系统
  19. 湖北大学计算机系2020录取分数线,2020湖北大学本科投档录取分数线
  20. 关于ORA-03113:end-of-file on communication channel

热门文章

  1. 分布式,微信小程序 服务器保持登入态解决方案,
  2. 算法与数据结构(面向对象思想)
  3. idea创建Struts2 项目并运行
  4. 网络宣传推广浅谈关键词排名好却没有流量的原因解决方法!
  5. 网络推广专员浅析站内网络推广引流怎样做?
  6. 浅析企业网站排名低可能是哪些原因导致的呢?
  7. 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...
  8. mfc指示灯报警显示_消防百科 | 火灾显示盘的基本功能有哪些?
  9. Docker 修改镜像源地址
  10. lucene 范围过滤