Loading [MathJax]/jax/output/HTML-CSS/jax.js
编程题
                ### 问题描述

有一只猴子在外出旅游的时候看到远处有一颗香蕉树,它想每天都能来这里取香蕉,但是它距离那颗树的距离为 n (即猴子需要荡到 n+1 的位置才能取到香蕉),现在,它能在他当前的位置(设为 0 )到香蕉树的中间这段路径建立一些柱子,这些柱子上都有一根长度为 m 的藤曼,能帮它荡到 i(i+m1) 中的任意位置,如果它荡到另一个柱子上,那它可以继续朝前方荡去。位置 0 上已经有一根长度为 m 的藤曼,所以不需要再位置 0 上建造。

建立这些柱子需要消耗不同的价值,每根柱子所需要的价值为 pi ,这只聪明的猴子想通过使用最少的价值来让它每天都能通过这些柱子来快速获取香蕉,你能帮帮他吗?

输入格式

第一行,两个正整数 n,m (1n5×104),(2m500) 。代表猴子距离香蕉树的距离和每根柱子上藤曼的长度。

第二行, n 个正整数 p1,p2,p3,pn (1pi109) ,代表猴子在位置为 i 的地方建造柱子需要消耗多少的价值。

输出格式

一行,包含一个正整数,代表最少需要多少价值才能帮助这只猴子荡到香蕉树。

输入样例

5 3
1 2 3 4 5

输出样例

6

样例说明

样例中,我们首先在位置为 2 的位置建造一根柱子,这样猴子就可以从 0 的位置荡过来。

然后我们在位置为 4 的位置建造一根柱子,这样猴子能从位置 2 的柱子上荡过来,并且能直接从当前柱子荡到香蕉树( n+1 ) 的位置上。

所以,最少消耗的价值应该为 6 ,可以证明不存在比这个更小的建造方法。

查看答案
赣ICP备20007335号-2