uva10382 Watering Grass

题意:有一块草坪,长为l,宽为w,再起中心线的不同位置处装有n个点状的喷水装置。每个喷水装置i可以将以它为中心,半径为ri的圆形区域润湿,请选择尽量少的喷水装置,把整个草坪全部润湿。

分析:对于直径小于宽度的喷水装置其实可以忽略,剩下的问题转换成了最小区间覆盖问题,即:用最少数量的区间去覆盖给定的区间

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <math.h>
 5 #define zz
 6 using namespace std;
 7 const int MAXN = 11111;
 8 pair<double, double>a[MAXN];
 9 int main(){
10 #ifndef zz
11     freopen("in.txt", "r", stdin);
12 #endif
13     int n;
14     double l, w;
15     while(scanf("%d%lf%lf", &n, &l, &w)!=EOF){
16         int i, j, m = 0;
17         for(i=0; i<n; i++){
18             double p, r;
19             scanf("%lf%lf", &p, &r);
20             if(2*r<=w) continue;
21             double tmp = sqrt(r*r-w*w/4);
22             a[m++] = make_pair(p-tmp, p+tmp);
23         }
24         sort(a, a+m);
25         int cnt = 0;
26         bool flag = false;
27         double low = 0, up = 0;
28         for(i=0; i<m; i++){
29             if(a[i].first>up) break;
30             if(a[i].second>up){
31                 for(j=i; j<m&&a[j].first<=low; j++)
32                     if(up<a[j].second) up = a[j].second;
33                 cnt++;
34                 if(up>=l) {flag = true; break;}
35                 low = up;
36             }
37         }
38         if(flag) printf("%d\n", cnt);
39         else puts("-1");
40     }
41 }

 

时间: 2024-10-08 17:56:13

uva10382 Watering Grass的相关文章

UVa 10382:Watering Grass

链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1323 原题: n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each sprinkler is installed

uva 10382 - Watering Grass

点击打开链接uva 10382 题目意思:     有一块草坪,长为l,宽为w  ,在它的中心线上装有n个点状的喷水装置 , 效果是让以它为中心半径为ri的圆被润湿  , 选择尽量少的喷水装置把整个草坪全部润湿. 解题思路:   1:贪心,区间覆盖 2:这道题就是一个区间覆盖的变形,只是没有那么的直观而已.刚开始区间求错了,直接求出最左边和最右边的左边以此来作为区间端点,后来WA了近20次才发现考虑错了,嗨,只怪自己思维不够严谨.真正的区间求法是,把这个圆和这个矩形两边的交点的横坐标求出来就是区

GRASS GIS 6.4.2发布 地理资源分析系统

GRASS(the Geographic Resources Analysis Support System)是一款光栅和基于矢量的GIS(Geographic Information System)的地理资源分析系统,用于图像http://www.aliyun.com/zixun/aggregation/34332.html">处理系统.图形制作系统.空间建模系统.它包含了许多栅格数据处理模块.矢量数据处理.在显示器或纸上的图像渲染.多光谱图像地理编码和处理.点数据管理和通用数据管理.它

uva10382

题意:有一块草坪,长为l,宽为w,在其中心线的不同位置处装有n个点状的喷水装置,每个装置i可以将以它为中心,半径为ri的圆形区域润湿,清选择尽量少的喷水装置,把整个草坪全部润湿. 分析:其实是一个最小区间覆盖的问题,用最少的区间覆盖给定的区间. 代码:   #include <stdio.h> #include <math.h> #include <algorithm> using namespace std; const int MAXN = 11111; doubl

英语基本用语总汇1000句 推荐_中英文对照

1. I see. 我明白了. 2. I quit! 我不干了! 3. Let go! 放手! 4. Me too. 我也是. 5. My god! 天哪! 6. No way! 不行! 7. Come on. 来吧(赶快) 8. Hold on. 等一等. 9. I agree. 我同意. 10. Not bad. 还不错. 11. Not yet. 还没. 12. See you. 再见. 13. Shut up! 闭嘴! 14. So long. 再见. 15. Why not? 好呀!

PS木刻滤镜把风景图片转为矢量插画

  木刻滤镜用来制作矢量效果是非常不错的.操作也非常简单,只有三个选项,分别用来控制色阶,边缘及细节等.操作的时候要对原片进行简单的分析,把主体跟背景等分开处理,主体部分多保持一点细节,这样效果更逼真. 原图 最终效果 1.打开素材,为了体现你很专业,也为了更好的效果,照片可以分成三个图层–'sky','car'和'grass&tree'. 然后用你最心水的选择工具把天空部分选出来(我用的是魔术棒W). 2.执行"编辑>拷贝"和"编辑>粘贴"来创

通过PS木刻滤镜把风景图片转为矢量插画

木刻滤镜用来制作矢量效果是非常不错的.操作也非常简单,只有三个选项,分别用来控制色阶,边缘及细节等.操作的时候要对原片进行简单的分析,把主体跟背景等分开处理,主体部分多保持一点细节,这样效果更逼真. 原图 最终效果 1.打开素材,为了体现你很专业,也为了更好的效果,照片可以分成三个图层–'sky','car'和'grass&tree'. 然后用你最心水的选择工具把天空部分选出来(我用的是魔术棒W). 2.执行"编辑>拷贝"和"编辑>粘贴"来创造一

颜色列表(中英文名称,RGB HSV CMYK值)

http://www.chong3000.com/04/color_02.htm HSV颜色模型 HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间,也称六角锥体模型(Hexcone Model). 这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V). 顏色 名稱 英語 十六进制 R G B C M Y K H S V   黑色 Black #000000 0 0 0 0 0 0 100 0 0 0  

串接样式表(CSS)来显示XML文件

css|xml|显示|样式表     在本章中,你将学习显示XML 文件于Microsoft Internet Explorer 5 中的第一种方法:串接样式表(CSS).串接样式表是一个包含安排XML 文件中元素相关指令的档案.因为你已经利用XML创造了自己的元素,浏览器并不知道如何适当地显示这些元素.建立串接样式表并将它链接到XML 文件中便是一种告诉浏览器如何显示文件中每个元素的方法.附加串接样式表的XML 文件可以直接在Internet Explorer 5 中被开启.你不需要使用HTM