华为OD 爱吃蟠桃的孙悟空 Java

题目描述

孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有 N 棵桃树,每颗树上都有桃子,守卫将在 H 小时后回来。

孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉 K 个,如果树上的桃子少于 K 个,则全部吃掉,并且这一小时剩余的时间里不再吃桃。

孙悟空喜欢慢慢吃,但又想在守卫回来前吃完桃子。

请返回孙悟空可以在 H 小时内吃掉所有桃子的最小速度 K(K为整数)。如果以任何速度都吃不完所有桃子,则返回0。

输入描述

第一行输入为 N 个数字,N 表示桃树的数量,这 N 个数字表示每颗桃树上蟠桃的数量。

第二行输入为一个数字,表示守卫离开的时间 H。

其中数字通过空格分割,N、H为正整数,每颗树上都有蟠桃,且 0 < N < 10000,0 < H < 10000。

输出描述

吃掉所有蟠桃的最小速度 K,无解或输入异常时输出 0。

用例1

输入

2 3 4 5
4

输出

5

用例2

输入

2 3 4 5
3

输出

0

用例3

输入

30 11 23 4 20
6

输出

23

import java.util.Scanner;

import java.util.Arrays;

public class Main {

         public static void main(String[] args) {

                 Scanner in = new Scanner(System.in);

                 String[] strNums = in.nextLine().split(" ");

                 int[] nums = Arrays.stream(strNums).mapToInt(Integer::parseInt).toArray();

                 int period = in.nextInt();

                 int min = 1;

                 int max = 1;

                 for(int num:nums){

                        if(num >= max) max = num;

                 }

                 if(nums.length > period) {System.out.print(0); return;} //桃子吃不完,返回0

                 if(nums.length == period){System.out.print(max); return;} //桃子树和返回时间相同

                System.out.println(getNum(nums, period, min, max));

         }

          public static int getNum(int[]nums, int period, int min, int max){

                  int mid = (min+max)/2;

                  if(mid == min) return max;

                  int size = 0;

                 for(int num: nums){

                       size = (int)Math.ceil((double)num/mid) + size; //计算总耗时

                  }

                if(size > period){

                      min = mid;//总耗时大于守卫回来时间,min=mid,往右继续寻找最优值

                     return getNum(nums, period, min, max);

               }

              if(size <= period){

                    max = mid;  //总耗时小于等于守卫回来时间,max=mid,往左继续寻找最优值

                   return getNum(nums, period, min, max);

              }

            return 0;

       }

}

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
孙悟空蟠桃时,华为OD可能会通过其技术和产品提供支持与帮助。 首先,华为OD华为的开放开发平台,为开发者和合作伙伴提供了丰富的技术资源和开发工具。在孙悟空蟠桃的场景下,华为OD可能会提供一种基于物联网技术的智能食品追溯系统。这个系统可以追踪蟠桃的种植、采摘、存储、运输等环节的信息,确保蟠桃的安全和品质。开发者可以通过华为OD平台的技术资源和工具,以及与华为合作伙伴的协作,构建这样一个智能食品追溯系统。 其次,华为OD平台可能还提供一些与孙悟空蟠桃相关的应用程序。比如,一个基于华为OD平台的智能家居应用,可以通过识别孙悟空的声音或人脸,自动提供一些便利的功能。比如,当孙悟空靠近蟠桃时,系统可以自动将蟠桃洗净或剥皮,或者提供一些有关蟠桃的健康食谱推荐。 最后,华为OD平台还可能提供一些与蟠桃相关的社交媒体应用。可以想象,孙悟空蟠桃的场景会引起很多人的兴趣和关注,人们可能愿意分享自己的蟠桃经历、菜谱或者与孙悟空的互动等。华为OD平台可以提供一个社交媒体平台,让用户可以方便地分享和交流这些有趣的内容。 总之,华为OD可能会通过技术支持、应用开发和社交媒体等方面,为孙悟空蟠桃这个场景提供多样化的解决方案和体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值