关闭

UVA10954 :Add All(全部相加)

标签: uva
135人阅读 评论(0) 收藏 举报
分类:

作者:xq的acm之路

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1895

题目大意:n个集合,每次删除两个,求这两个的和的总和。。

思路:优先队列

这题太水了,今晚刷了三个水题,都不想睡觉了。。

代码如下:

#include <iostream>
#include <queue>

using namespace std;

int main()
{
    int n,x;
    while(cin>>n&&n)
    {
        priority_queue<int,vector<int>,greater<int> >q;
        for(int i=0;i<n;i++)
        {
            cin>>x;
            q.push(x);
        }
        int ans=0;
        for(int i=0; i<n-1; i++)
        {
            int a=q.top();
            q.pop();
            int b=q.top();
            q.pop();
            ans+=a+b;
            q.push(a+b);
        }
        cout<<ans<<endl;
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8640次
    • 积分:700
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:2篇
    • 译文:0篇
    • 评论:3条