zoukankan      html  css  js  c++  java
  • ZOJ 3778 Talented Chef 模拟 [ 祝愿明天省赛一帆风顺, ZJSU_Bloom WILL WIN : )

    这题的意思是给你 n 道菜,第 i 道菜需要 Ai 步才能完成

    每次你能对 m 道菜分别完成一步,请问最少需要几次?

    这题暴力写肯定是不行的,去年省赛的时候就是没写出来这题,今天再把思路理一理吧。

    首先我们需要明确的是

    1. n <= m 的时候, 那么答案显而易见,就是 Max (A[i])

    2. n > m 

      ①此时我们不难发现这个现象,如果 sum (A[i]) 能被 m 整除,那么我们可能恰恰只需要 (sum / m) 次即可完成

        一个例子: n = 3, m = 2

             a[1] = 1, a[2] = 2, a[3] = 3

      

      ②如果,sum (A[i]) 不能被 m 整除,那么只需要在 ① 的基础上加1即可

    当然,这里不能忘了,在答案输出的时候,要保证答案 >= Max(A[i]), 否则会出现对一个 A[i] 多次减法操作

    贴上 Source Code:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <string>
     4 #include <cstring>
     5 #include <stack>
     6 #include <queue>
     7 #include <vector>
     8 #include <cstdlib>
     9 #include <algorithm>
    10 
    11 using namespace std;
    12 
    13 int a[60000];
    14 int n, m;
    15 
    16 int main (){
    17     int i, j, k, u, v, t;
    18 
    19     cin >> t;
    20     while (t--) {
    21         cin >> n >> m;
    22         int sum = 0;
    23         int MAX = 0;
    24         for (i = 0; i < n; ++i){
    25             cin >> a[i];
    26             sum += a[i];
    27             MAX = max (MAX, a[i]);
    28         }
    29 
    30         if (n <= m) {
    31             cout << MAX << endl;
    32             continue;
    33         }
    34 
    35         int cur = sum / m;
    36         if (sum % m != 0)   ++cur;
    37 
    38         cur = max(cur, MAX);
    39 
    40         cout << cur << endl;
    41     }
    42 
    43     return 0;
    44 }
  • 相关阅读:
    如何准备面试复试(1)
    如何应对糟糕的面试官(2)
    美国:经济危机让烟民吸烟量增加
    MOV 指令的注意事项
    一个简单的ajax无刷新翻页的程序
    SQL注入漏洞全接触
    php+mysql非暴力查表的注入语句写法总结
    在你的成长过程中,有五个人非常重要
    爱就在那里,不增不减
    php的一些书籍
  • 原文地址:https://www.cnblogs.com/wushuaiyi/p/4454474.html
Copyright © 2011-2022 走看看