http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/2385/pid/2127.html #include<bits/stdc++.h> using namespace std; int a[10000]; int main() { int n,a1,a2,i; int sum=0; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; } priority_queue<int , vector<int> , greater<int> >q;//从小到大排列 for(i=0;i<n;i++) { q.push(a[i]);//进入队列 } while(q.size()>1)//因为最后只剩下一组,所以控制长度大于1 { a1=q.top();//将a1定义为首元素 q.pop();//出队列 a2=q.top();//将a2定义为首元素 q.pop();//出队列 sum+=a1+a2; q.push(a1+a2);//这里注意将a1+a2进入队列,而不是sum } cout<<sum<<endl;//最后输出sum return 0; }
SDUT-合并果子之哈夫曼树(priority_queue)
最新推荐文章于 2024-06-16 19:47:45 发布