UVA
来源:互联网 发布:杭州创业软件 编辑:程序博客网 时间:2024/06/08 15:28
点击打开题目链接
题目大意:
给出长为l,宽为w的一块长方形草地。草地上有n个喷头,给出每个喷头的圆心坐标及半径。求解最少需要多少喷头覆盖整个长方形。
思路:
将圆形区间转化成长方形区间。每个圆与草地相交的四个点为长方形的四个顶点。然后贪心求解。
附上AC代码:
#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int maxn = 10000 + 5;double n;double l, w;struct nodes { double l, r;}node[maxn];bool cmp(nodes a, nodes b) { return a.l < b.l;}int main() { ios::sync_with_stdio(false); while(cin >> n >> l >> w) { int cnt = 0; double o, r; for(int i = 0; i < n; i++) { cin >> o >> r; if(r * 2 < w) continue; else { double t = sqrt( r * r - (w / 2) * (w / 2) ); node[cnt].l = o - t; node[cnt++].r = o + t; } } sort(node, node + cnt, cmp); if(node[0].l > 0) { cout << -1 << endl; continue; } int ans = 0; double tmp = 0, ln = 0; while(ln < l) { tmp = ln; for(int i = 0; i < cnt; i++) if(node[i].l <= ln && node[i].r > tmp) tmp = node[i].r; if(tmp == ln) { ans = -1; break; } ln = tmp; ans++; } cout << ans << endl; } return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- ILSVRC2017:Beyond ImageNet Large Scale Visual Recognition Challenge
- how to share register and bit field definitions between a device driver and the FPGA it controls
- Java NIO系列教程(十一) Pipe
- 解决ubuntu 终端tab键无法命令补全的问题
- QT类学习系列(6)- Qt多线程的简单实现以及不能同时处理UI的操作
- UVA
- Mysql 问题
- RESTful---SpringMVC学习笔记(十三)
- 两行代码搞定底部菜单栏的实现
- 现在,中国的互联网公司该不该走出国门?
- Eclipse-安卓-Unable to resolve target 'android-25'
- Action 委托
- Mysql事务以及加锁机制事务的特征ACID
- 【HDU 2187】悼念512汶川大地震遇难同胞——老人是真饿了(贪心)