nyoj 12 喷水装置(二)【贪心】+【区间完全覆盖覆盖】
来源:互联网 发布:熊猫看书软件 编辑:程序博客网 时间:2024/06/06 04:21
题意:。。。
这道题就是区间问题三种中的区间完全覆盖问题,不懂的可以看我上一篇也是区间完全覆盖。
直接上代码:
#include <stdio.h>#include <math.h>#include <algorithm>using std::sort;struct node{double le, ri;}s[1005];int cmp(node a, node b){return a.le < b.le;}int main(){int n, t;double w, h;scanf("%d", &t);while(t --){scanf("%d%lf%lf", &n, &w, &h);h /= 2; //要除去2int i, j;double temp, r;for(i = 0, j = 0; i < n; i ++){scanf("%lf%lf", &temp, &r);if(r <= h) continue;//如果不能,喷洒到俩边或刚好喷洒到两边else{double temp1 = sqrt(r*r-h*h);//求最长能够形成矩形的宽度s[j].le = temp -temp1;//左边界s[j++].ri = temp+temp1;//右边界}}sort(s, s+j, cmp);//排序//for(i = 0; i < j; i ++){//printf("%lf %lf..\n", s[i].le, s[i].ri);//}if(s[0].le > 0) {printf("0\n"); continue;} //如果第一个要大于0, 就是0到不了,直接输出0double end = 0;i = 0;int cou = 0;while(end <= w&&i < j&&cou <= n){//区间覆盖核心代码这里的temp = end;while(s[i].le <= end&&i <j ){if(s[i].ri > temp) temp = s[i].ri;i++;}end = temp+0.000001;//每次都只加上0.00001,俩区间有断点,就能区分++cou;}if(end < w||cou > n){//如果cou>n 就说明有断点, end<w说明到达不了wprintf("0\n");}else{ printf("%d\n", cou);}}return 0;}题目链接:点击打开链接
0 0
- nyoj 12 喷水装置(二)【贪心】+【区间完全覆盖覆盖】
- nyoj 12 喷水装置(二) 贪心 区间覆盖
- NYOJ 12 喷水装置(二)【贪心+区间覆盖】
- 【喷水装置(二) 区间覆盖 贪心。】
- NYOJ-12 喷水装置2(贪心 区间覆盖)
- nyoj--12--喷水装置(二)(区间覆盖问题+贪心)
- NYOJ 喷水装置(二)(区间覆盖)
- 喷水装置(二) +区间覆盖-基础问题-贪心
- HDOJ喷水装置(二)--区间完全覆盖问题
- NYOJ 12 喷水装置(2)贪心之区间覆盖问题
- 喷水装置(二)--区间覆盖问题
- NYOJ——12 喷水装置(二)(区间覆盖)
- NYOJ 题目12 喷水装置(二) 最小区间覆盖问题
- 南阳 12 喷水装置(二)区间覆盖问题
- NYOJ 6 喷水装置(一) 贪心算法 之 区间覆盖问题
- 喷水装置(二)(南阳oj12)(贪心之区间覆盖问题)
- NYOJ-----12---喷水装置(二)贪心
- 最小区间覆盖(南洋理工—喷水装置二)
- sql语句的使用
- 今天的问题
- Javascript模块化编程(一):模块的写法
- 学习视频
- hdu 4968 Improving the GPA(dp)
- nyoj 12 喷水装置(二)【贪心】+【区间完全覆盖覆盖】
- msdn之dll
- Visual Studio (2010)上手
- 指针作为函数的参数
- javascript基础
- MFC编程集锦
- 单播,组播和广播
- poj 2773 Happy 2006(数论:欧拉函数)
- STM32单片机学习(13) I2C读写AT24Cxx存储器实验