/* * Uva-10382-Watering Grass.cpp *  特别注意精度。。(感觉这道题的判题有问题,开始怎么交都WA,,过两天什么都没改,再交就AC了 , 汗。。 * * 详细代码注释: http://apps.hi.baidu.com/share/detail/24628400 * *  Created on: 2011-10-3 *      Author: */#include <cstdio>#include <cmath>#include <algorithm>using namespace std;

const int maxN = 10000 + 5;const double eps = 1E-7;

int n, l, w;struct SData{double x, y;};SData interval[maxN];

//精度inline int lfcmp(double x){if (x > -eps) return 1;else return -1;}

//按X值排序inline int cmp(const void *a,const void *b){return lfcmp( (((SData*)a)->x)-(((SData*)b)->x) );}

//区间覆盖-贪心void greedy(){int i = 0, ans = 0, j;double cover = 0, tmpMax;bool covered = false;while(i < n){        j = i;        tmpMax = cover;while(j<n && lfcmp(cover - (interval[j].x)) > 0){if(lfcmp((interval[j].y) - tmpMax) > 0)                tmpMax = interval[j].y;            j++;        }if(i == j) break;

        ans++;        cover = tmpMax;        i = j;

if(lfcmp(cover - l) > 0){            covered = true;break;        }    }if(covered) printf("%d\n", ans);else printf("-1\n");

}

int main(){while(scanf("%d %d %d", &n, &l, &w) != EOF){int p[maxN], r[maxN];for(int i=0; i<n; i++)            scanf("%d %d", &p[i], &r[i]);

for(int i=0; i<n; i++){//碰不到边界,不考虑            if(r[i] * 2 < w){                interval[i].x = 0;                interval[i].y = 0;continue;            }

double d = sqrt((double)r[i]*r[i] - (double)w*w/4);            interval[i].x = p[i] - d;            interval[i].y = p[i] + d;        }

        qsort(interval, n, sizeof(SData), cmp);

        greedy();    }

return 0;}

UVa-10382 Watering Grass **相关推荐

  1. UVa 10382 - Watering Grass

    链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&pa ...

  2. 10382 - Watering Grass(贪心 区间覆盖问题)洒水面覆盖

    double qiuzhi(int id) {double t1=cc[id].rid*cc[id].rid;double t2=w*w/4;double t3=t1-t2;double t4=sqr ...

  3. UVA10382 - Watering Grass 题解

    原题链接 Online Judge: 10382 - Watering Grass Virtual Judge: Watering Grass - UVA 10382 洛谷:UVA10382 Wate ...

  4. UVa10382 - Watering Grass(贪心算法)

    问题:给出一个长为l,宽为w的绿化带,n个喷水装置及其对就位置x和影响半径r.问最少需要多少个喷水装置能全覆盖此绿化带 思路:首先要计算喷水装置可以覆盖的区间,如果喷水装置的影响半径小于等于w/2,是 ...

  5. *【UVA - 10382】Watering Grass(贪心,区间覆盖问题,思维)

    题干: 题目大意: 有一块草坪,长为l,宽为w,在它的水平中心线上有n个位置可以安装喷水装置,各个位置上的喷水装置的覆盖范围为以它们自己的半径ri为圆.求出最少需要的喷水装置个数,如果无论如何都不能覆 ...

  6. Watering Grass UVA - 10382 贪心

    问题 https://vjudge.net/problem/UVA-10382 分析 将一个点的覆盖范围看作是一个长方形,舍弃弓形区域,变成区间覆盖问题,用贪心法 注意:bb-ww/4有可能小于0,要 ...

  7. Watering Grass——UVA10382

    题目 n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each s ...

  8. Watering Grass UUV 1038 贪心

    问题: n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each ...

  9. UVA-10382 Watering Grass

    题意:有一个长方形草坪,长为l,宽为w,在它的水平中心线上可以安装n个喷水器来为草坪浇水,每个喷水器能够灌溉的范围是以该喷水器为中心的半径为r的圆.我们要灌溉整个草坪,问你最少需要的喷水器数. 题解: ...

最新文章

  1. linux连接wifi账户密码忘了怎么办,wifi登录密码忘了怎么办?
  2. 用maven创建Spring MVC项目
  3. python数据结构与算法(2)
  4. vs五子棋c语言代码,五子棋代码C语言版.doc
  5. fastreport 旋转90度_水冷必不可少之90度弯头
  6. 子类覆盖父类(Java)
  7. IDEA打开父类的接口方法快捷键
  8. 苹果7手机严重卡顿_苹果手机仅配备4GB运存都不会卡顿,安卓系统为何要更多内存?...
  9. KNN算法网格搜索最优参数
  10. NSURLErrorDomain 对照
  11. PTA程序设计基础题目集(1)
  12. c语言函数实现顺序线性表,数据结构C语言实现——顺序线性表SqList
  13. ntpdate 安装_SAS 9.4 安装教程
  14. 计算机修改了服务如何恢复,怎么修复MSDTC服务?
  15. Xshell4 注册码 ,Xftp4 注册码
  16. 海思麒麟要敢于叫板高通骁龙
  17. 1.什么是计算机图形学?
  18. 苹果手机上网速度慢_手机4G上网慢、卡吗?几种设置让你的网速飞起来
  19. 爬虫 一些爬取图片时出现的错误
  20. 支配集(dominating set)问题是NP完全问题的一个证明

热门文章

  1. java操作阿里云的对象存储OSS
  2. This application requires Java Runtime Environment
  3. 一个比较完善的购物车类
  4. pku773_Happy 2006
  5. DB2 CASE/IF 条件控制语句
  6. 时间序列聚类方法的研究
  7. ShardingSphere(四) 垂直分库配置搭建,实现写入读取
  8. RabbitMq(十七)rabbitmq的四种集群监控
  9. 类的初始化列表_【Flutter 111】Flutter手把手教程Dart语言——类、类的的成员变量和方法、类的构造函数...
  10. WxParse手机端报console.dir错误