喷水装置(一) 贪心
程序员文章站
2022-03-26 10:35:53
...
- 输入
- 第一行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
分析:
要想使得使用喷头使用最少,那就需要先尽可能的使用辐射范围比较大的喷头,那么覆盖的范围就大
先将半径从大到小排序。由图可知:
草坪的长度为20,要想全部将草坪全部湿润,那么就要将辐射范围在水平方向上的 数累加,当大于20的时候,就全部湿润,如l1*2就是半径为r1的喷头所能在水平方向上喷射的最远距离
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <vector> #include <set> #include <map> #include <stack> #include <string> using namespace std; int cmp(double a,double b) { return a > b; } double Tri(double a,double b) { return sqrt(a*a-b*b); } int main() { int m; cin >> m; while(m--) { int n; cin >> n; vector<double>v(n); double tmp; for(int i = 0;i < n;i++) { cin >> tmp; v.push_back(tmp); } sort(v.begin(),v.end(),cmp); double sum = 0; for(int i = 0;i < v.size();i++) { sum += 2.0*Tri(v[i],1.0); if(sum > 20) { cout << i+1 << endl; break; } } } return 0; }
推荐阅读
-
充电照明一物多用? 新式无线充电装置亮相
-
电脑散热装置,一定要霸气!
-
2020广东省物理大赛竞赛 设计一个可悬浮的声波悬浮装置程序设计
-
一种 Android 应用内全局获取 Context 实例的装置
-
HDU6299 Balanced Sequence (多校第一场1002) (贪心)
-
寒假每日一题day10 AcWing 1208. 翻硬币(贪心,扫雷问题)
-
Leecode每日一题:861. 翻转矩阵后的得分(贪心)
-
HDU6301 Distinct Values (多校第一场1004) (贪心)
-
世界上第一台计算器,安提基特拉机械装置(发明于公元前60年)
-
Magazine Ad CodeForces - 803D(二分 + 贪心,第一次写博客)