A80299.午枫的石子合并
普及-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
小午和小枫在河边捡了 n 堆的石子,每堆石子有 ai 个石子,他们将这 n 堆石子排列在一排,其中第 i 堆石子位于从左向右第 i 个位置。
现在他们想把这 n 堆石子合并成一堆石子,由于他们的力量有限,每次只能从某一堆中最多将 k 个石子搬到相邻的位置中去。形式化地,每次操作他们可以将位于从左向右数第 i 个中至多 k 个石子搬运到从左向右数第 i−1 个位置或 i+1 个位置。
请问他们最少需要搬几次才能将所有石子合并到一起。
输入格式
第一行输入两个正整数 n,k (1≤n≤2×105,1≤k≤109) ,分别表示石子堆数和每次可以搬运的最多石子数量。
第二行输入 n 个正整数 ai (1≤ai≤109) ,表示第 i 堆中石子的数量。
输出格式
输出包含一个整数,表示将所有石子合并到一堆需要花费的最少搬运次数。
输入输出样例
输入#1
5 2 5 2 4 7 1
输出#1
12
说明/提示
将第一组石子全部移动到第二组,前两次移动 2 个,最后一次移动 1 个,本轮消耗 3 点体力,此时石子排列变为 [0,7,4,7,1] 。
将第二组石子全部移动到第三组,前三次移动 2 个,最后一次移动 1 个,本轮消耗 4 点体力,此时石子排列变为 [0,0,11,7,1] 。
将第五组石子全部移动到第四组,只移动一个石子,本轮消耗 1 点体力,此时石子排列变为 [0,0,11,8,0] 。
将第四组石子全部移动到第三组,每次移动 2 个,本轮消耗 4 点体力,此时石子排列变为 [0,0,19,0,0]。
合并完成,共消耗 3+4+1+4=12 点体力。