牛牛晾衣服

C 牛牛晾衣服

牛牛有n件带水的衣服,干燥衣服有两种方式。
一、是用烘干机,可以每分钟烤干衣服的k滴水。
二、是自然烘干,每分钟衣服会自然烘干1滴水。
烘干机比较小,每次只能放进一件衣服。
注意,使用烘干机的时候,其他衣服仍然可以保持自然烘干状态,现在牛牛想知道最少要多少时间可以把衣服全烘干。

思路: 考虑从大往小取出衣服 进行烘干 其实存在一个问题 就是当前秒最优决策并不能代表下一秒的最优决策
所以每件衣服 只能烘干一秒 然后放回待选区 所以使用对应的优先队列 附上代码
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>que;
        while(!que.empty()) que.pop();
        for(int i = 0; i < n; i ++){
            que.push(a[i]);
        }
        if(k == 1){
            return que.top();
        }
        int time = 0, value = 0;
        while(que.top() > value){
            int t = que.top();
            t = t - k + 1; 
            /*
            你可能会疑惑为什么要 - k + 1
            答案就是对应的 如果考虑一个 8 k=4
            那么对应的话 剩余一个4 就不进入循环 所以得 + 1
            因为加1了 所以k == 1的情况就需要特判
            */
            que.pop();
            time += 1;
            value += 1;
            que.push(t);
        }
        return time;
        // write code here
    }
};

原文链接: https://www.cnblogs.com/qq136155330/p/13326608.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    牛牛晾衣服

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/367592

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午5:52
下一篇 2023年3月2日 下午5:52

相关推荐