南阳题目6-喷水装置(一)
2016-04-06 18:21
190 查看
喷水装置(一)
时间限制: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<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int main() { double s[10100]; int m,n,a,b,i,M; scanf("%d",&M); while(M--) { scanf("%d",&m); for(i=0;i<m;i++) scanf("%lf",&s[i]); sort(s,s+m); double sum=0; for(i=m-1;i>=0;i--) { sum+=sqrt(s[i]*s[i]-1)*2; if(sum>=20) break; } printf("%d\n",m-i); } return 0; }
相关文章推荐
- Atitit.有分区情况下的表查询策略流程
- Android初试--Android中的BroadcastReceiver(2)
- 宝宝上幼儿园了
- Andorid 6.0权限管理遇到的坑
- java 富文本编辑内容去除格式 正则表达式
- Atitit.有分区情况下的表查询策略流程
- Atitit.有分区情况下的表查询策略流程
- AJAX
- 怎么判断大小端呢?
- padding-left --左内边距
- Atitit.判断元素是否显示隐藏在父元素 overflow
- android popupWindow使用
- <二代测序> 下载 NCBI sra 文件
- Android应用层View绘制流程与源码分析,性能优化
- Android 上多方式定位元素(python)
- 结构体内存对齐问题
- Atitit.判断元素是否显示隐藏在父元素 overflow
- Atitit.判断元素是否显示隐藏在父元素 overflow
- Mach-o可执行文件简述
- java中&和&&的区别和联系