zoukankan      html  css  js  c++  java
  • 喷水装置 贪心算法

    喷水装置(一)

    时间限制: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<iostream>
    #include<cstdio>
    #include<cstring>
    #include<sstream>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<cmath>
    #include<map>
    #include<stack>
    #include<set>
    #include<fstream>
    #include<memory>
    #include<list>
    #include<string>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    #define MAXN  602
    #define INF 1000000009
    /*
    喷水装置
        用半径为ri的多个喷水装置覆盖 20*2 的长方形区域
        考虑四分之一圆对于下半部分的影响!将问题分解考虑:
        可以看作用多个半圆将 20*1 长方形覆盖
        可以看作用2*n个四分之一圆将20*1 覆盖
        考虑计算每个四分之一圆能覆盖的长方形长度即可
        x*x + 1 = r*r
    */
    int n;
    double r[MAXN],a[MAXN];
    int main()
    {
        int T;
        cin >> T;
        while (T--)
        {
            cin >> n;
            for (int i = 0; i < n; i++)
            {
                cin >> r[i];
                if (r[i] > 1)
                    a[i] = sqrt(r[i] * r[i] - 1);
                else
                    a[i] = 0;
            }
            double sum = 20.0;
            int p = n - 1;
            sort(a, a + n);
            while (sum>0)
            {
                sum -= a[p--] * 2.0;
            }
            printf("%d
    ", n - 1 - p);
        }
        return 0;
    }
  • 相关阅读:
    js 判断是否包含
    react-navigation-easy-helper
    mobx 小结
    react native使用 mobx , can't find variable:Symbol
    react-native 极光推送(jpush-react-native)
    react-native 启动页(react-native-splash-screen)
    react-native Android 全面屏手机 底部留有一大块黑屏
    RAP + MOCK
    ES7新特性
    POP动画[2]
  • 原文地址:https://www.cnblogs.com/joeylee97/p/6814799.html
Copyright © 2011-2022 走看看