/ Vijos / 题库 /

合并石堆

合并石堆

时间限制:1秒  内存限制:256M


【问题描述】

  有 \(n\) 堆石子,每堆石子的石子数分别为 \(a[1],a[2],…,a[n]\),每次你可以把第 \(i\) 堆合并到第 \(j\) 堆,合并后第 \(j\) 堆的石子数为 \(a[i]+a[j]\),第 \(i\) 堆消失,这样操作的代价为 \(a[i]\) ,总代价为每次操作的代价之和。你的任务是找出把 \(n\) 堆石子合并为一堆的最小代价。

  为了增加点挑战性,规定一堆石子只能与其他堆合并 \(k\) 次(如果某堆已经合并了 \(k\) 次以后就只能被合并到其他堆了)。我会给出 \(q\) 个这样的 \(k\),不过相信你还是可以 AC 的~

【输入格式】

  第一行一个数 \(n\)。
  第二行 \(n\) 个数,表示 \(a[i]\)。
  第三行一个数 \(q\),表示有 \(q\) 个询问。
  第四行 \(q\) 个数表示 \(q\) 个询问的 \(k\)。

【输出格式】

  输出 \(q\) 个整数,即对每个 \(k\) 的最小代价

【输入输出样例】

 Input

5
2 3 4 1 1
2
2 3

 Output

9 8

【数据说明】

  对于 \(100\%\) 的数据,\(≤ n,q,k ≤ 10^5\),\(0 ≤ a[i] ≤ 10^9\)

【来源】

  Mr.he

信息

ID
1511
难度
(无)
分类
贪心 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
上传者