zoukankan      html  css  js  c++  java
  • 疆场景算法(Java实现)

    <一>咖啡的香气

    1.题目描述:

      自从零食间开始免费供应上好的咖啡豆,小杰每天午休后都会来到零食间,按下咖啡机的按钮,等待着杯里弥漫开来的香气把自己淹没,纷乱的思绪也渐渐在水雾中模糊。“小杰,你还有N个bug没修,别摸鱼了,快来解bug!”一个不合时宜的声音往往会在此时响起,小杰的脑海中瞬间闪过了无数个文件,无数行代码随着咖啡的香气不断滚动。
      “我是不可能写bug的,这辈子都不可能与bug的...",小杰边念叨着,一边开始在脑海里盘算起来。
      假设每喝一杯咖啡(喝咖啡的时间忽略不计)就能让自己一个小时内的debug效率提升到原来的A倍,- 小时内重复喝没用, 最多只能喝X杯,太多了晚上会睡不着, 并且为了保证可持续发展,每天最多只能专注工作8个小时,而在没喝咖啡的状态下解决每个bug所需要的时间为t1,t2.....tN分钟。

      小杰的咖啡还没有喝完,你能帮他计算出他今天能解完所有bug吗?如果能,最少需要多长时间?

    输入:

      输入包含多组测试数据,每组数组:
      第一行有三个正整数N ,A, X分别表示,bug的总数,喝一杯咖啡在一小时内debug效率的倍数,。

      (1 <=N<= 100,1 1=A<=8,1<=x<=8)
      第二行有N个正整数,由空格分割开,第i个正整数ti表示解决第i个bug需要的分钟数,(1<=ti<=1000)
    输出:
      对于每组测试数据:
      输出一个数字,如果不能解完所有bug.则输出0,如果可以,则输出最少需要的分钟数T (T为正整数,如不满分钟则按一分钟计算一且超过8小时则认为不能解完)
      

    样例输入:

    8 2 8

    60 60 60 60 60 60 60 60

    4 3 3

    333 77 100 13

    样例输出:

    240

    175

    代码如下:

    package com.ymm.core.dajiang;
    
    import java.util.Scanner;
    
    public class One {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		
    		int N = in.nextInt();  //bug的总数
    		int A = in.nextInt();  //喝一杯咖啡在一小时内debug效率的倍数
    		int X = in.nextInt();  //最多可以喝的咖啡数目
    		int[] arr = new int[N];
    		
    		for(int i = 0 ; i < N ;i++) {
    			arr[i] = in.nextInt();
    		}
    		System.out.println(coffee(N,A,X,arr));
    	}
    	
    	private static int coffee(int N,int A,int X,int[] arr) {
    		int res = 0; //bug的总时间
    		for(int i = 0; i < arr.length ; i++) {
    			res += arr[i];
    		}
    		
    		int time1 = X *60 *A; //喝咖啡的时间
    		int time2 = (8 - X) *60; //剩余时间
    		
    		if(res > (time1 + time2)) {
    			return 0;
    		}else if(res < time1) {
    			if(res % A != 0) {
    				return res / A + 1;
    			}else {
    				return res / A;
    			}
    		}else {
    			int b = res - time1;
    			return b + X *60;
    		}
    	}
    }
    

     <二> 应该吃哪个呢

    1.题目描述:

      在零食间里有一个季食柜,里面会半价供应很多好吃的零食,柜子被隔成了一个个小格子,类似一个矩阵,每个格子里会放置由前台小姐姐们精心挑选的零食,并且标上相应的价格。
      小A是个大吃货,每天他都要光顾次零食间,但是他又要减肥,于是他便对自己做了一个约束,每次只能从里面拿走总价格少于V的零食。这时候问题来了,对于每种零食,小A都有一个内心的满意度,小A希望每次都能吃上让自己最满意的零食。假设零食柜里每个格只放置种零食, 每种零食的数量是有限的,买完就没有了,季食只能按照整数倍购买,不能只买半件。问小A在有限价格内买到的季食的总满意度最高是多少?

    输入:

      输入包含多组测试数据,每组数组:
      第一行有两个正整数N, T,分别表示,零食的种类数目和小A最多用于购买零食的口钱。(1<=N<= 100,1 <=T <= 10000)
      接下来有N行, 每行有三个正整数用空格隔开,按顺序表示零食需要的价格v,满意度和零食的数量c。

      (1 <=V<= 1001 <=|<=100,1<=c<= 100)

    输出:
      对于每组测试数据:
      输出一个正整数如果无法购买任何一个零食输出0,否则输出最大的满意度。


    样列输入:
    2 10

    1 1 1

    1 1 1
    3 100

    26 100 4

    5 1 4

    5 2 2
    样例输出:

    代码如下:

    package com.ymm.core.dajiang;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Two {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    
            while (scanner.hasNext()){
                int n = scanner.nextInt();
                int t = scanner.nextInt();
                ArrayList<Merchandise> arr = new ArrayList<>();
                int res = 0;
                int minPre;
    
                for (int i = 0; i < n; i++) {
                    arr.add(new Merchandise(scanner.nextInt(),scanner.nextInt(),scanner.nextInt()));
                }
                for (int i = 0; i < n-1; i++) {
                    for (int j =  n-1; j >i; j--) {
                        Merchandise o1 = arr.get(j-1);
                        Merchandise o2 = arr.get(j);
                        if(o1.avg>o2.avg){
                            arr.set(j,o1);
                            arr.set(j-1,o2);
                        }
                    }
                }
                for (int i = n-1; i >= 0; i--) {
                    Merchandise o1 = arr.get(i);
                    while (t>=o1.v&&o1.c>0){
                        o1.c--;
                        t-=o1.v;
                        res+=o1.l;
                    }
                }
                System.out.println(res);
            }
    
        }
    
        static class  Merchandise{
            int v;
            int l;
            int c;
            double avg;
    
            public Merchandise(int v, int l, int c) {
                this.v = v;
                this.l = l;
                this.c = c;
                avg = l/(double)v;
            }
    	}
    
    }
    


     

  • 相关阅读:
    postman: 字符串与数字的转换
    postman:截取字符串字符
    postman:获取txt变量中数据
    postman:参数化外部文件txt、csv、json
    postman:全局变量、环境变量、collection模块变量
    windows下更新python报错permission denied
    vertica 7.0 使用kafka
    Kafka报错-as it has seen zxid 0x83808 our last zxid is 0x0 client must try another server
    vertica 8.0 新特性
    mysql source导入报错ERROR 1366的解决方法
  • 原文地址:https://www.cnblogs.com/youdiaodaxue16/p/11335736.html
Copyright © 2011-2022 走看看