@[wangzichenA](/user/686043) 因为需要不停地取出在放回队列,所以每次都要排序,需要用优先队列,每次放值时,它能帮你自动排序!!!
##### 优先队列:
```
1.从小到大:priority_queue<int,vector<int>,greater<int> > q;
2.从大到小:priority_queue<int,vector<int>,less<int> > q;
```
##### 优先队列的函数:
```
1.push(x)//放入一个值x
2.pop()//删除队首元素
3.top()//取出队列顶部
4.empty()//判断队列是否为空
5.size()//求队列长度
```
//最后附上本蒟蒻的AC代码
```
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
priority_queue <int,vector<int>,greater<int> > q;
for(int i=1;i<=n;i++){
int x;
cin>>x;
q.push(x);
}
int sum=0;
while(q.size()>=2){
int x=q.top();
q.pop();
int y=q.top();
q.pop();
sum+=x+y;
q.push(x+y);
}
cout<<sum;
return 0;
}
```
by mamingyu0927 @ 2023-09-03 19:40:16
@[wangzichenA](/user/686043) 这道题应该用优先队列,可以看看楼上的大佬。
by smyoking @ 2023-09-03 20:06:00
@[smyoking](/user/820348) 我是蒟蒻
by mamingyu0927 @ 2023-09-03 20:26:41
@[mamingyu0927](/user/685725) 比我强就行了,我才是蒟蒻
by smyoking @ 2023-09-03 20:38:11
@[smyoking](/user/820348) @[mamingyu0927](/user/685725) 搞什么啊?我才是蒟蒻,都别跟我争
by wangzichenA @ 2023-09-08 19:02:43
还是感谢大佬的解答,不包括马铭煜【滑稽】
by wangzichenA @ 2023-09-08 19:03:27
@[wangzichenA](/user/686043) 你再这样我下次就不帮你了
by mamingyu0927 @ 2023-09-08 20:23:26
@[mamingyu0927](/user/685725) 那你说了什么啊?
你都没说个解法好吗?
by Earth_Sky @ 2023-09-09 10:05:07
@[WangHaoRu11](/user/783336) ???第一句话不是???
by mamingyu0927 @ 2023-09-09 20:04:08
@[mamingyu0927](/user/685725) 抱歉,看错了
by Earth_Sky @ 2023-09-10 14:31:17