传送门
http://www.lydsy.com/JudgeOnline/problem.php?id=1616
题目大意
直接看题吧,一提语文我心累QAQ
题解
其实是个简单的完全背包
dp[j]=min(dp[j],dp[j-i]+sum[j-i]+m) (i<=j)
加m是他自己要回来,但第一次不用回来,所以最后答案减去m即可
var
x,y:array[0..2505]of longint;
dp:array[0..2605]of longint;
i,j,k:longint;
n,m:longint;
function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end;
begin
readln(n,m);
y[0]:=m;
for i:=1 to n do
begin readln(x[i]); y[i]:=y[i-1]+x[i]; end;
for i:=1 to n do
dp[i]:=100000000;
dp[0]:=0;
for i:=1 to n do
for j:=i to n do
dp[j]:=min(dp[j],dp[j-i]+y[i]+m);
writeln(dp[n]-m);
end.