题目连接:该题是luogu试炼场的2-6:T1
题目大意:
1 给n个数字的序列,(每次取最小的两个相加,得到新的数字),这个数字再放回原序列,直到序列里只有一个数;
2 求:过程中产生的和的总量;
3 例如:
原序列为:1 2 3 5;
1+2=3: 新序列为:3 3 5;
3+3=6: 新序列为:5 6;
5+6=11:新序列为:11.
所以答案是:3+6+11=20.
解题思路:
1 因为数字是可以随意调换顺序的,所以每次都是要找最小值出来,因此想到了堆;
2 用一个堆来维护这些数字,每次取最小值,然后把加好的新值放回堆中;
3 直到堆里值剩下一个元素,记录过程的和就好了。
上代码: