NYOJ-6:喷水装置(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wingrez/article/details/82019160

NYOJ-6:喷水装置(一)

来源:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=6

标签:排序,贪心算法

参考资料:

相似题目:https://blog.csdn.net/wingrez/article/details/82012429

题目

现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0

输入

第一行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

解题思路

请见另一篇博客:https://blog.csdn.net/wingrez/article/details/82012429

参考代码

#include<stdio.h>
#include<math.h>
#include<algorithm>
#define MAXN 605
using namespace std;
double arr[MAXN];
bool cmp(double a,double b){
    return a>b;
}
int main(){
    int m;
    scanf("%d",&m);
    while(m--){
        int n;
        scanf("%d",&n);
        int i,j;
        for(i=0;i<n;i++)
            scanf("%lf",&arr[i]);
        sort(arr,arr+n,cmp);
        int ans=0;
        double len=0;
        for(i=0;i<n;i++){
            if(arr[i]>1){
                len=len+(sqrt(arr[i]*arr[i]-1))*2;
                ans++;
                if(len>=20) break;
            }
            else break;
        }
        printf("%d\n",ans);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/wingrez/article/details/82019160
今日推荐