nyoj 12 喷水装置二
2016-11-08 16:46
316 查看
喷水装置(二)
时间限制: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。 样例输入
样例输出
时间限制: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<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"); } } }
相关文章推荐
- nyoj 12 喷水装置(二) 贪心 区间覆盖
- NYOJ 12 喷水装置(二)(贪心算法)
- NYOJ 12 喷水装置(二)
- nyoj_12 喷水装置(二)
- NYOJ-12 喷水装置(二)
- NYOJ 12 喷水装置(二)
- nyoj12 喷水装置(二)贪心
- NYOJ 12 喷水装置(二)
- NYOJ12 喷水装置(二)
- NYOJ 12 喷水装置(二)【贪心+区间覆盖】
- nyoj 12 喷水装置(二)
- NYOJ 12 喷水装置(二)(贪心)
- NYOJ 12 喷水装置(二)
- nyoj 12 喷水装置(二)
- NYOJ12 喷水装置(二)【贪心】
- NYOJ 12 喷水装置(二)
- nyoj12 喷水装置(二)
- nyoj-12-喷水装置(二)
- nyoj 12 喷水装置(二)
- NYOJ12 喷水装置(二)【贪心】