博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Watering Grass
阅读量:4994 次
发布时间:2019-06-12

本文共 1034 字,大约阅读时间需要 3 分钟。

题目链接:

  题意:

给定一条草坪,草坪上有n个喷水装置。草坪长l米宽w米,n个装置都有每个装置的位置和喷水半径。要求出最少需要几个喷水装置才能喷满草坪。喷水装置都是装在草坪中间一条水平线上的。

案例:

Sample Input

8 20 2
5 3
4 1
1 2
7 2
10 2
13 3
16 2
19 4
3 10 1
3 5
9 3
6 1
3 10 1
5 3
1 1
9 1
Sample Output
6
2
-1

分析:

    区间覆盖问题

用贪心,按覆盖最远的排序,每次找最远的然后更行左边界。

这题有个要注意的地方是圆型覆盖,所以在初始化时把其化成矩形覆盖问题,(根据勾股定理转化)

#include
#include
#include
#include
#include
using namespace std;#define maxn 10100int n,k;double m,w,x,y; struct node{ double l; double r;}a[maxn];int cmp( node a, node b) //按覆盖最远的排序(半径由大到小){ return a.r > b.r; }int main(){while(scanf("%d%lf%lf",&n,&m,&w)!=EOF){ double L=0; k=0; int i=0,j=0; double d;while(n--){scanf("%lf%lf",&x,&y); d=sqrt(y*y-(w*w)/4); //转化为矩形覆盖 a[j].l=x-d; a[j++].r=x+d; }sort(a,a+j,cmp); while(L
L) { L=a[i].r; k++; break; } } if(i==j) break; }if(L

 

转载于:https://www.cnblogs.com/fenhong/p/4709016.html

你可能感兴趣的文章
年轻人,能用钱解决的,绝不要花时间(转)
查看>>
python2.7.X 升级至Python3.6.X
查看>>
VS调试方法
查看>>
jquery拖拽实现UI设计组件
查看>>
javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)...
查看>>
白话排序算法--冒泡排序
查看>>
imx6 18bit display
查看>>
Spring静态属性注入
查看>>
实验10:指针2
查看>>
【转】hibernate缓存:一级缓存和二级缓存
查看>>
第二个spring冲刺第3天
查看>>
AwSnap:让全版本(Windows、iOS、Android)Chrome浏览器崩溃的有趣漏洞
查看>>
线段树合并学习笔记
查看>>
AndroidAutoLayout
查看>>
样本不均衡下的分类损失函数
查看>>
node启动服务后,窗口不能关闭。pm2了解一下
查看>>
vsCode 改变主题
查看>>
【vijos】【树形dp】佳佳的魔法药水
查看>>
聚合新闻头条
查看>>
Ubuntu 关闭锁屏界面的 on-screen keyboard
查看>>