题解 | #搬水果#

搬水果

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

采用优先队列解决问题

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

int main()
{
    int N;
    while (cin >> N) {
        if (N == 0) break;
        priority_queue<int, vector<int>, greater<int>> pq;
        while (N--) {
            int val;
            cin >> val;
            pq.push(val);
        }
        int result = 0;
        while (pq.size() > 1) {
            int a = pq.top();
            pq.pop();
            int b = pq.top();
            pq.pop();
            pq.push(a+b);
            result += a + b;
        }
        cout << result << endl;
    }
    return 0;
}
全部评论

相关推荐

07-04 16:00
门头沟学院 Java
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务