小 C 有 本书,每本书都有一个重量,他决定把它们合并成一摞。
每一次合并小 C 可以把一摞书放到另一摞书上面,使得它们合并到一摞。如果小 C 把第 摞书放到第 摞书上面,小 C 需要消耗的体力为第 摞书的重量加上两摞书的磨损值之和。
初始时每本书自成一摞且磨损值均为 。每当小 C 将两摞书合并后,形成的新的一摞书的磨损值为合并前的两摞书的磨损值的较大值的两倍再加一,重量为合并前的两摞书的重量之和。
你的任务是设计出合并的次序方案,使小 C 耗费的体力最少,并输出这个最小的体力耗费值。
从文件 book.in 中读取数据。
book.in
本题有多组测试数据。
输入的第一行包含一个正整数 ,表示数据组数。
接下来依次输入每组测试数据,对于每组测试数据:
输入的第一行包含一个正整数 ,表示有 本书。
输入的第二行包含 歌正整数,第 个数 表示第 本书的重量。
输出到文件 book.out 中。
book.out
对于每组测试数据输出一行一个整数,表示将 本书合并成一摞需要消耗的最少体力。
1 4 1 1 1 1
6
如果小 C 将 本书两两合并再将得到的两摞合并成一摞,那么前两次需要消耗的体力值各为 。第三次将一摞重量为 的书放到另一摞上面,两摞书磨损值各为 ,需要消耗的体力为 。
因此如果选择这个方案,小 C 耗费的体力只有 。
可以证明,在上述例子中, 为最小的体力耗费值。
见附件中的 book/book2.in 与 book/book2.ans。
book/book2.in
book/book2.ans
见附件中的 book/book3.in 与 book/book3.ans。
book/book3.in
book/book3.ans
见附件中的 book/book4.in 与 book/book4.ans。
book/book4.in
book/book4.ans
对于所有测试数据保证:,,。
特殊性质:保证 。