题解 | #搬水果#

搬水果

https://www.nowcoder.com/practice/e4c775b0f3ee42a4bb72c26d2e1eef8a

小根堆求解哈夫曼树问题

#include <iostream>
#include "queue"
using namespace std;

int main() {
    int n;
    while (cin >> n) { // 注意 while 处理多个 case
        // cout << a + b << endl;
        if (n == 0) break;
        priority_queue<int, vector<int>, greater<int>> myQueue;
        while (n--) {
            int temp;
            cin >> temp;
            myQueue.push(temp);
        }
        int ans = 0;
        while (myQueue.size() >= 2) {
            int a = myQueue.top();
            myQueue.pop();
            int b = myQueue.top();
            myQueue.pop();
            ans += a + b;
            myQueue.push(a + b);
        }
        cout<<ans<<endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务