10954

来源:互联网 发布:cocostudio mac 下载 编辑:程序博客网 时间:2024/06/07 10:05

像是一道水题。。。。

这种题方法好就会很简单

不过可以看看优先队列
 最小开销,肯定是前面删除并相加的数越小结果越小,所以用了一个优先队列,从小到大自动排好序然后相加

#include <iostream>#include<cstdio>#include<queue>using namespace std;int main(){    int n,x;    while(scanf("%d",&n)==1&&n)    {        priority_queue<int,vector<int>,greater<int> > q;        for(int i=0;i<n;i++)        {            scanf("%d",&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);        }        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击