【南理oj】6 - 喷水装置(一)(贪心)
2016-01-06 20:08
357 查看
喷水装置(一)
时间限制:3000 ms | 内存限制:65535 KB难度:3
描述现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。
输入第一行m表示有m组测试数据
每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。
输出输出所用装置的个数
样例输入
2 5 2 3.2 4 4.5 6 10 1 2 3 1 2 1.2 3 1.1 1 2
样例输出
2 5
来源[苗栋栋]原创
上传者苗栋栋
挺经典的贪心算法的题。
代码如下:
#include <stdio.h> #include <algorithm> #include <math.h> using namespace std; bool cmp(double a,double b) { return a>b; } double cal(double x) { double m; m=sqrt(x*x-1); m*=2; return m; } int main() { int u; int n; //n个喷水装置 double r[622]; int ans; double d; //可波及到的边长(大于20时即可完成任务) scanf ("%d",&u); while (u--) { scanf ("%d",&n); for (int i=0;i<n;i++) { scanf ("%lf",&r[i]); } sort (r,r+n,cmp); //从大到小排序 ans=0; d=0; for (int i=0;i<n;i++) { d+=cal(r[i]); ans++; if (d>=20) break; } printf ("%d\n",ans); } return 0; }
相关文章推荐
- TableView Segues
- INSERTDELETES&NOINSERTDELETES--GoldenGate Parameter
- @property 的基本认识
- Linux基本的命令与快捷建(在centos版本下)
- Pascal's Triangle leetcode
- Sicily 1741. Jaunt around the Zhuhai Campus
- 文章标题
- 画板记录
- 2015年度引进版技术书TOP10
- 【bzoj4028】[HEOI2015]公约数数列 分块
- 第三章 保证数据完整性
- Caffe学习系列(18): 绘制网络模型
- 《实时控制软件设计》第三组第二天工作日志
- Easyui弹出框
- 《Effective java》读书记录-第11条-谨慎地覆盖clone
- HDOJ 2010 水仙花数
- 图形学理论 光照模型
- 解决Ubuntu14.04 LTS中Chrome死机的问题
- 实战中的 Promise 和 Future
- SDL2.0学习笔记——在屏幕上显示一张图片