题目背景
小E不幸在一场战斗中失去了他的金宝剑。
题目描述
制造一把金宝剑需要n种原料,编号为1到n,编号为i 的原料的坚固值为ai。炼金是很讲
究放入原料的顺序的,因此小E必须按照1到n的顺序依次将这些原料放入炼金锅。但是,
炼金锅的容量非常有限,它最多只能容纳w个原料。所幸的是,每放入一个原料之前,小
E可以从中取出一些原料,数量不能超过s个。我们定义第 i 种原料的耐久度为:放入第
i种原料时锅内的原料总数*ai,则宝剑的耐久度为所有原料的耐久度之和。小E当然想让
他的宝剑的耐久度尽可能得大,这样他就可以带着它进行更多的战斗,请求出耐久度的
最大值。
输入格式
第一行,三个整数 n,w,sn,w,sn,w,s。
第二行,nnn 个整数 a1,a2,…,ana_1,a_2,\dots,a_na1,a2,…,an。
输出格式
一行一个整数,表示耐久度的最大值。
输入输出样例
输入
5 3 3
1 3 2 4 5
输出
40
题解
读完题,我们可以想到:
1. 已经放入锅中的材料没有本质上的区别,对后面放入材料的贡献都为1。
2. 加入新物品后,锅中材料数为j,可在材料数为j-1直接加入,或取出s个材料。
故此,定义f[i,j]表示,放到第i个物品,箱子里有j个元素的最大价值和。
状态转移方程:
f[i,j]= max k = 1 → m a x ( 1 , j − s ) f [ i − 1 ]