NYOJ 12 喷水装置(二)
喷水装置(二)
- 描写叙述
-
有一块草坪,横向长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 喷水装置(二)相关推荐
- 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...
1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...
- 小米笔记本 12.4 二合一 评测
屏幕方面,这块 12.4 英寸 IPS LCD 触摸屏还是可圈可点的,分辨率为 2,560 x 1,600 像素,峰值亮度为 500 尼特,100% DCI-P3 色域,覆盖了一层康宁大猩猩玻璃. 这 ...
- 【新书推荐】【2019.12】二十一世纪的人工智能(第三版)
[2019.12]二十一世纪的人工智能(第三版)Artificial Intelligence in the 21st Century 3rd Edition,共750页. 如果需要电子版,请联系QQ ...
- 贪心算法之——喷水装置二(nyoj12)
题目描述: 喷水装置(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000) ...
- NYOJ 6 喷水装置(一) 贪心算法 之 区间覆盖问题
喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为 ...
- 空间谱专题12:二维测向的基本方法
作者:桂. 时间:2017-10-01 16:50:08 链接:http://www.cnblogs.com/xingshansi/p/7617442.html 前言 圆阵.面阵.L阵.十字阵.V形 ...
- NYOJ 6 喷水装置(一)
喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心 ...
- 【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
文章目录 前言 一.桥接模式(Bridge Pattern) 二.使用步骤 角色 示例 总结 优点 缺点 使用场景 前言 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分 ...
- nyoj 12(区间覆盖)
贪心策略是将左端点从小到大排序,选择右端点,使得右端点尽量覆盖的最远 AC: #include<stdio.h> #include<algorithm> #include< ...
最新文章
- webToImage (网页转图片)模块试用分享
- qt 拖拽 修改大小
- SAP ABAP bcset激活时,关联的数据库表条目是如何插入的
- HDOJ 2199 HDU 2199 Can you solve this equation? ACM 2199 IN HDU
- Redis数据结构——跳跃表-skiplist
- ubuntu下mysql整个数据库备份与还原
- 如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...
- PAT Java 返回非零 的原因 OJ
- FHQ Treap摘要
- 如何为我们的程序编写开发文档——Java文档注释
- fiddler4+雷电模拟器4.0.82抓包设置
- 拓扑排序算法原理及Java代码实现
- 工程师高级职称计算机考试成绩查询,高级工程师职称查询
- windows10升级助手_Win7即将全面停更,看这里,决定回退还是升级?
- python中fact_python中fact函数使用
- Re-ID Driven Localization Refinement for Person Search
- python单位根检验平稳性怎么看是否平稳_Python ADF 单位根检验 如何查看结果的实现...
- 学生机房随堂测试软件,全智能考试系统——随堂评测考试系统
- 湖北大学计算机系2020录取分数线,2020湖北大学本科投档录取分数线
- 关于ORA-03113:end-of-file on communication channel
热门文章
- 分布式,微信小程序 服务器保持登入态解决方案,
- 算法与数据结构(面向对象思想)
- idea创建Struts2 项目并运行
- 网络宣传推广浅谈关键词排名好却没有流量的原因解决方法!
- 网络推广专员浅析站内网络推广引流怎样做?
- 浅析企业网站排名低可能是哪些原因导致的呢?
- 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...
- mfc指示灯报警显示_消防百科 | 火灾显示盘的基本功能有哪些?
- Docker 修改镜像源地址
- lucene 范围过滤