文章

19

粉丝

0

获赞

144

访问

3.5k

头像
合并果子 题解:每次从堆中取出两个最小的数,将它们相加,然后把和放回堆中,并累加这个和
P1544 中南大学机试题
发布于2026年3月20日 21:14
阅读数 71

#include <iostream>
#include <queue>

using namespace std;

int main()
{
	int n;
	priority_queue<int,vector<int>,greater<int>> minHeap;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int num;
		cin>>num;
		minHeap.push(num);
	}
	int ans=0;
	int a,b;
	while(minHeap.size()>1)
	{
		a=minHeap.top();
		minHeap.pop();
		b=minHeap.top();
		minHeap.pop();
		ans+=a+b;
		minHeap.push(a+b);
	}
	cout<<ans;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发