• 贪心算法之喷水装置(一)水题


    喷水装置(一)

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


    代码:
    package acm01;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    /**
     * 现有一块草坪,长为20米,宽为2米,
     * 要在横中心线上放置半径为Ri的喷水装置,
     * 每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,
     * 并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。
     * @author Administrator
     *
     */
    public class Main {
    
        private static int X = 20;
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int N = input.nextInt();
            for (int i = 0;i<N;i++) {
                int number = input.nextInt();
                
                double [] array = new double[number];
                for (int j = 0;j<array.length;j++) {
                    array[j] = input.nextDouble();
                }
                //排序
                Arrays.sort(array);//从小到大排序
                int x = 0;
                int count = 0;
                for (int k = number-1;k>=0;k--) {
                    if (x <= X) {
                        x+=array[k] *2;
                        count++;
                    }
                
                }
                
                System.out.println(count);
                
            }
        }
        
    }
  • 相关阅读:
    select下拉的value和option内值得获取
    express模块下GET和POST获取前台数据
    Node.js---fs模块
    Node.js---MySQL的增删改查
    Node.js--mysql的应用
    Node.js-router(将大服务拆分成一个个小服务)
    22
    窗口切换
    IO
    第一次实训作业
  • 原文地址:https://www.cnblogs.com/airycode/p/5355420.html
Copyright © 2020-2023  润新知