2024华为OD机试真题-爱吃蟠桃的孙悟空-(C++/Python)-C卷D卷-200分 ...

打印 上一主题 下一主题

主题 650|帖子 650|积分 1950

2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)
   题目描述

  孙悟空爱吃蟠桃,有一天趁着蟠桃园保卫不在来偷吃。已知蟠桃园有 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
  
  考点

  二分查找
  
  解题思绪

  我们可以在速度的范围 [1, max_piles] 中举行二分查找,
  每次取中央值 mid 作为孙悟空的吃蟠桃速度,然后计算以该速度吃蟠桃必要的时间。
  假如时间小于等于给定的时间 h,说明孙悟空可以在给定时间内吃完所有蟠桃,
  我们可以实验更小的速度;否则说明孙悟空不能在给定时间内吃完所有蟠桃,
  我们必要实验更大的速度。终极,当速度的范围缩小到只剩下一个数时,
  该数就是孙悟空吃蟠桃的最小速度。
  代码

c++

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4.     int tmp,h;
  5.     vector<int> vec;
  6.     int hi=0;
  7.     while(cin>>tmp) {
  8.         vec.push_back(tmp);
  9.         hi=max(hi,tmp); //取出最大值
  10.         if(cin.get()=='\n') {break;}
  11.     }
  12.     cin>>h;
  13.     int n=vec.size();
  14.     if(h<n) {
  15.         cout<<0<<endl;
  16.         system("pause");
  17.         return 0;
  18.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

耶耶耶耶耶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表