#创作计划#合并果子(A21705)题解
2026-04-08 21:31:59
发布于:福建
4阅读
0回复
0点赞
题解
题目传送门
思路
一道贪心。
不难想出,每次合并两堆重量最轻的即可。
优先队列
but,每次都用sort太麻烦了,还会超时。
所以,接下来隆重介绍一个STL容器——优先队列(priority_queue)!
优先队列基于堆,队头是最大值(大根堆)/最小值(小根堆)。
还是思路
所以建一个小根堆就可以了。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
priority_queue<int,vector<int>,greater<int> >a;
int n,ans=0;
cin>>n;
for(int i=0;i<n;i++){
int b;
cin>>b;
a.push(b);
}
while(a.size()>1){
int x=a.top();
a.pop();
int y=a.top();
a.pop();
a.push(x+y);
ans+=x+y;
}
cout<<ans;
return 0;
}
全部评论 1
蒟蒻的第二篇题解,求求点一个赞吧!

昨天 来自 福建
0

有帮助,赞一个