题目描述
场上有 堆果子,第 堆有 个。每次可以任选两堆合并成一堆,代价为两堆个数之和;反复合并直到只剩一堆。合并顺序可以任意安排,总代价等于每次代价的总和——请让总代价最小。
贪心策略:每次都挑最小的两堆合并,这正好用小根堆维护:priority_queue<long long, vector<long long>, greater<long long>>。
输入格式
第一行一个整数 ()。
第二行 个整数 ()。
输出格式
一行一个整数:最小的总代价。 时不用合并,代价为 。
样例
输入:
3
1 2 3
输出:
9
先并 1、2 代价 3,再并 3、3 代价 6,总共 9;其他顺序都更贵。
数据范围
,。总代价最大约 ,必须用 long long。提示:贪心挑最小的两堆——堆型选反(默认大根),总代价立刻虚高。