是tyvj 1055 《沙子合并》代码如下:var i,j,n:longint;
a:array[1..301]of longint;
f:array[0..301,0..301]of longint;
m:array[0..301]of longint;
function min(a,b:longint):longint;
begin
if a>b then exit(b)else exit(a);
end;
procedure init;
begin
assign(input,'add.in');reset(input);
readln(n);
for i:=1 to n do begin read(a[i]);m[i]:=a[i];end;
for i:=1 to n do
for j:=1 to n do begin
f[i,j]:=maxlongint;
end;
for i:=1 to n do m[i]:=m[i]+m[i-1];
end;
procedure print;
begin
writeln(f[1,n]);
end;
function dp(l,r:longint):longint;
var k:longint;
begin
if l=r then begin f[l,r]:=0;exit;end;
for k:=l+1 to r-1 do
begin
dp(l,k);
f[l,r]:=min(f[l,r],f[l,k]+f[k,r]+(m[r]-m[l-1]));
end;
end;
begin
init;
dp(1,n);
print; close(input);
end.