CF2022B 题解

· · 题解

题目传送门

题目大意

n 种不同型号的汽车。第 i 种型号的汽车有 a 辆,每位顾客最多购买 x 辆来自不同的型号的车。

求引入的最小客户数量。

思路

要卖完 n 辆车,至少需要 \max{a_1, a_2, a_3, ……, a_n} 位客户,否则无法把最多的车全卖掉。因此,\ 此时顾客数 ans1 = \max{a_1, a_2, a_3,…… , a_n} 。

由每个顾客最多只能买 x 辆车,可得,\ 此时顾客数 ans2 = \frac{\sum_{i = 1}^{n}a_i}{x}

整合后最终答案 ans\max(ans1, ans2)

代码实现

#include<bits/stdc++.h>
using namespace std;
int sum, ans1, ans2, ans;
int a;
int main() {
    int t;
    cin >> t;
    while(t--){
        int n, x;
        scanf("%d%d", &n, &x);
        ans1 = 0, sum = 0; //多测记得清零
        for(int i = 1; i <= n; i++){
            scanf("%d", &a);
            sum += a;//算好累加和,节省循环 
            ans1 = max(ans1, a); //求第一个答案
        }
        ans2 = ceil(double(sum) / double(x));; //计算第二个答案(ceil强转为double)
        ans = max(ans1, ans2); //最终结果取最大值 
        printf("%d", ans);
        puts("");
    }
    return 0;//完结撒花 
}