题解 | #搬水果#

搬水果

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

#include <iostream>
#include<bits/stdc++.h>
using namespace std;

int main() {
   int n;
   priority_queue<int> mq;
   while(scanf("%d",&n)!=EOF){
       if(n==0){//n==0退出输入
           break;
       }
       while(n--){
        int m;
        scanf("%d",&m);
        mq.push(-m);//巧法:优先队列默认为大根堆,加入时前加个负号,将大根堆改成小根堆
    }
    int res =0;
    while(mq.size()>1){
            int leaf1 = mq.top();//haffuman的权值最小的两个之一
            mq.pop();
            int leaf2 = mq.top();//haffuman的权值最小的两个之一
            mq.pop();
            res = res + leaf1 + leaf2;
            mq.push(leaf1+leaf2);
    }
    printf("%d\n",-res);//加个负号输出

    }
   
}

全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
比亚迪汽车新技术研究院 硬件工程师 总包21左右 硕士
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务