关闭

南阳理工学院 ACM OJ-- 题目6 喷水装置(一) (贪心暴力)

标签: c语言
1223人阅读 评论(0) 收藏 举报
分类:

喷水装置(一)

时间限制: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

原连接:http://acm.nyist.net/JudgeOnline/problem.php?pid=6

思路:

直接给输入的半径从大到小排序。

因为草坪是长20米,宽2米,所以半径小于1米的根本就不可能覆盖整个草坪,所以要丢弃半径小于1米的。

对于半径大于1米的圆来说,覆盖的面积为   4× sqrt(R*R-1)

所以直接暴力  直到满足面积即可!

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn = 1000 + 10;
double a[maxn];
const double eps = 1e-10;
bool cmp(double a,double b){
    return a > b;
}
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        int n;
        scanf("%d",&n);
        for (int i = 0; i < n; ++i)scanf("%lf",&a[i]);
        sort(a,a+n,cmp);
        int ans = 0;
        double sum = 0;
        for (int i = 0; i < n; ++i){
            if (a[i] < 1 + eps || sum > 40 - eps)break;
            sum += 4*sqrt(a[i]*a[i]-1);
            ++ans;
        }
        printf("%d\n",ans);
    }
    return 0;
}


0
0
查看评论

C语言贪心算法之喷水装置(二)

喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n 输入第一行输入一个正整数N表示共有n次测试数据。 每一组...
  • lee371042
  • lee371042
  • 2017-12-06 20:35
  • 77

南阳理工学院oj_喷水装置(一)

#include #include #include using namespace std; int main() { int n; while(cin >> n){ while(n--){ int m; double r[600]; cin>>m...
  • qq_24751851
  • qq_24751851
  • 2015-05-07 14:23
  • 405

南阳理工oj88--汉诺塔(一)

题目链接。http://acm.nyist.net/JudgeOnline/problem.php?pid=88 #include /* //测试一下49999和50000,1000000,1000000000你会发现规律. //关键是9个0的那个超大数输出的必须要快,否则超时. */...
  • jiangpengna
  • jiangpengna
  • 2015-11-26 20:15
  • 515

最小区间覆盖(南洋理工—喷水装置二)

喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 描述:有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n输入:第一行输入一个正整数N表示共有n次测试数据。 每一组测试数据的第一行有三个整数n,w,h,n表示共有n个喷水...
  • xiangkaijie
  • xiangkaijie
  • 2017-09-04 22:10
  • 73

南阳理工ACM 题目4 ASCII码排序

ASCII码排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:2      描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。   &#...
  • CORA_S_T
  • CORA_S_T
  • 2017-04-15 19:20
  • 288

南阳理工ACM-喷水装置(一)

喷水装置(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri...
  • u014041109
  • u014041109
  • 2014-03-11 19:00
  • 615

南洋理工ACM阶乘因式分解(二)070

阶乘因式分解(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 给定两个数n,m,其中m是一个素数。 将n(0 注:^为求幂符号。   输入第一行是一个整数s(0 随后的s行, 每行有两个...
  • qq_24729325
  • qq_24729325
  • 2015-10-11 18:53
  • 582

6174问题理工题

描述 假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序...
  • xjcjichao10
  • xjcjichao10
  • 2016-04-12 21:01
  • 255

南阳ACM12-喷水装置(二)

/*  喷水装置(二)  时间限制:3000MS | 内存限制:65535KB 难度:4    描述   有一块草坪,横向长w,纵向长为h,在它的横向中心线上不同位置处装有n(n  的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水...
  • lp310018931
  • lp310018931
  • 2014-03-18 20:39
  • 2366

nyoj 题号12 喷水装置(二)——南阳oj

题目信息: 喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个...
  • xianyun2009
  • xianyun2009
  • 2014-09-18 11:24
  • 914
    个人资料
    • 访问:195768次
    • 积分:7758
    • 等级:
    • 排名:第3250名
    • 原创:602篇
    • 转载:2篇
    • 译文:0篇
    • 评论:36条
    文章分类
    最新评论