nyoj 12 喷水装置二
来源:互联网 发布:证书打印软件绿色版 编辑:程序博客网 时间:2024/05/16 06:02
喷水装置(二)
时间限制: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。 - 样例输入
22 8 61 14 52 10 64 56 5
- 样例输出
12
#include<stdio.h>#include<math.h>#include<algorithm>using namespace std;struct zuobiao{ double left; double right;} a[10001];bool cmp(zuobiao x,zuobiao y){ return x.left<y.left;}int main(){ int N; scanf("%d",&N); while(N--) { int n,w; double h; scanf("%d%d%lf",&n,&w,&h); int i; double xi,ri; for(i=0; i<n; i++) { scanf("%lf%lf",&xi,&ri); double flag; if(ri>h/2) { flag=sqrt(ri*ri-h*h/4); a[i].left=xi-flag; a[i].right=xi+flag; } else { a[i].left=xi; a[i].right=xi; } } sort(a,a+n,cmp);//cmp是sort排序规则 n必须是整数 double temp; //先暂存喷水装置的洒水右区域 double right_=0; int sum=0; for(i=0; i<n; i++) { if(a[i].left<=right_)//如果不符合这个条件,那么这个区域不可能全部被湿润 { temp=a[i].right;//先暂存喷水装置的洒水右区域 while(a[i].left<=right_)//这个循环就是在满足 //较大的坐标作为右坐标给flag { //“下一个装置左坐标小于上一个装置右坐标” temp=max(a[i].right,temp);//的前提下,寻找下一个装置 i++; if(i==n) { break; } } right_=temp; sum++; i--; if(right_>=w) break; } } if(right_>=w) { printf("%d\n",sum); } else { printf("0\n"); } }}
0 0
- NYOJ 12-喷水装置二
- nyoj 12 喷水装置二
- nyoj 12 喷水装置二
- NYOJ 12 喷水装置(二)
- NYOJ 12 喷水装置(二)
- NYOJ 12 喷水装置(二)
- nyoj 12 喷水装置(二)
- NYOJ 题目12喷水装置(二)
- NYOJ 12 喷水装置(二)
- Nyoj 12 喷水装置(二)
- NYOJ 12 喷水装置(二)
- NYOJ 12 喷水装置(二)
- nyoj 12 喷水装置(二)
- NYOJ 12 喷水装置(二)
- NYOJ-12-喷水装置(二)
- nyoj 12 喷水装置(二)
- NYOJ--12--喷水装置(二)
- NYOJ 12 喷水装置(二)
- React 入门实例教程
- js--事件--事件对象
- 深度探索c++对象模型之new和delete运算符介绍
- 【厉害了我的哥】—— 快速布局神器Flexbox布局
- python之HTTP模块
- nyoj 12 喷水装置二
- Spring MVC事务配置(简)
- 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)
- tomcat添加到eclipse中
- C# 项目启动界面 实现思路
- <抄>STM32 定时器有时一开启就进中断的问题
- 一天一条Linux指令-perror
- Linux下比较全面的监控工具dstat
- my bank