优先队列
位数求和
https://ac.nowcoder.com/acm/contest/6220/A
优先队列,大根堆,每次取最大的数烘干若干分钟后小于第二大的水滴数,当最大数小于当前时间结束循环
class Solution { public: /** * 计算最少要多少时间可以把所有的衣服全烘干 * @param n int整型 n件衣服 * @param a int整型vector n件衣服所含水量数组 * @param k int整型 烘***1分钟可以烘干的水量 * @return int整型 */ int solve(int n, vector<int>& a, int k) { priority_queue<int> q; if(n==1) return a[0]/k+(int)(a[0]%k!=0); k--; for(auto x:a) q.push(x); int ans=0; while(q.top()>ans){ int curr=q.top(); q.pop(); int sec=q.top(); int t=(curr-sec)/k+((int)(curr-sec)%k!=0); t=max(t,1); curr-=t*k; q.push(curr); ans+=t; } return ans; } };