【华为OD】C卷200分真题:100%通过 孙悟空吃蟠桃 JS实现【思路+源码】

 C++代码实现:

【华为OD】C卷200分真题:100%通过 孙悟空吃蟠桃 C/C++实现-CSDN博客

Python代码实现:

【华为OD】C卷200分真题:100%通过 孙悟空吃蟠桃 python实现-CSDN博客

Java代码实现:

【华为OD】C卷200分真题:100%通过 孙悟空吃蟠桃 Java实现【思路+源码】-CSDN博客

C语言实现:

【华为OD】C卷200分真题:100%通过 孙悟空吃蟠桃 C语言实现 【思路+源码】_c语言孙悟空吃蟠桃-CSDN博客 

题目描述:

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

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

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

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

输入描述

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

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

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

输出描述

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

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

2 3 4 5
4

输出

5

示例2

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

2 3 4 5
3

输出

0

示例3

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

30 11 23 4 20
6

输出

23

     4                                                          
                                                            
              +---+                                               
              |   |                                               
              |   | 3                       3                     
              |   |                                               
              |   +---+                   -----                  + ---+
              | +      |       |            |   |                  +     |----|3
  +         2 | +      |       |          2 |   |     2            +     |    |
  +           | +      |       |            |   |                  +     |    |
  +       +---+ +      |       |        ----+   |   +---+          +     |    |
  +       |     +      |       |        |       |   |   |          +     |    |    ++++++|
  +     1 |     +      | 1     |      1 |       | 1 |   | 1        +     |    |    |     |
  +       |     +      |       |        |       |   |   |          +     |    |    |     |
  +   +---+     +      +---+   |    +---+       +---+   +---+      +     |    |    |     |
  +   |         +          |   |    |                       |      +     |    |    |     |
  + 0 |         +          | 0 |  0 |                       | 0    +     |    |    |     |
  +   |         +          |   |    |                       |      +     |    |    |     |
  +---+         +          +-------+                       +---+  +  +--- |    |+   |     |++
                +                                                      
    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14   15  16  17  18
 

题目解析:

        这个就是从 1开始挨个暴力来匹配即可,前提条件是树的数量小于等于守卫离开的时间,否则就是输出0

JS代码实现:


const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

function calc(arr, h) {
  let ans = 1;
  while (true) {
      let count = 0;
      for (let i of arr) {
          count += Math.ceil(i / ans); // 向上取整
      }
      if (count <= h) {
          break;
      } else {
          ++ans;
      }
  }
  return ans;
}

async function main(){
  let input = await readline();
  let vec = input.split(' ').map(Number);
  let h = parseInt(await readline());

  if (vec.length > h) {
    console.log(0);
  } else {
    vec.sort((a, b) => a - b);
    console.log(calc(vec, h));
  }
}

main();

【华为OD】C卷200分真题:100%通过 孙悟空吃蟠桃 JS实现【思路+源码】_第1张图片

你可能感兴趣的:(杂谈,华为od,c语言,javascript,java,算法,python,C++)