传送门 https://ac.nowcoder.com/acm/contest/6220/C
二分答案, 具体细节见代码

class Solution {
public:
    int solve(int n, vector<int>& a, int k) {
    // write code here
        sort(a.begin(), a.end());
        int ans = 0, l = 1, r = a[n-1], mid;
    // 二分的原因是答案一定在 a1- an 之间  最不济自然烘干an分钟, 全部都干了
        while(l < r) {
            mid = (l+r)>>1;
            int t = mid;
            for(int i = 0; i < n; i++) {
                // 对每次枚举的答案 计算当自然烘干不能完全烘干时, 分配最少的时间烘干
                // 如果所有的衣服分配时间都能烘干 则答案有效
                if(a[i] > mid) {
                    t -= (a[i]-mid)/(k-1);
                    // k-1 的原因是开始的时候设定是全部自然烘干, 所以当这件衣服要用烘***的时候 烘***使用的每分钟都
                    // 多了开始设定的自然烘干值1, 所以烘***效率其实只有 k-1
                    if((a[i]-mid) % (k-1)) t--;
                }
                if(t < 0) break;
            }
            if(t < 0) l = mid+1;
            else r = mid;
        }    
        return (l+r) >>1;
    }
};