讨论 / 找错!!
oxilis 2010-08-09 01:44:00
点我顶贴 收藏 删除
program Raisins;

var f:array[1..51,1..51,1..51,1..51]of longint;

a,s:array[0..55,0..55]of longint;

i,j,n,m:longint;

function min(a,b:longint):longint;

begin

if a<b then min:=a

else min:=b;

end;

function dp(x1,y1,x2,y2:longint):longint;

var i,tmp,x:longint;

begin

if f[x1,y1,x2,y2]<>-1 then exit(f[x1,y1,x2,y2]);

tmp:=maxlongint;

for i:=x1 to x2-1 do

tmp:=min(tmp,dp(x1,y1,i,y2)+dp(i+1,y1,x2,y2));

for i:=y1 to y2-1 do

tmp:=min(tmp,dp(x1,y1,x2,i)+dp(x1,i+1,x2,y2));

f[x1,y1,x2,y2]:=tmp+s[x2,y2]-s[x2,y1-1]-s[x1-1,y2]+s[x1-1,y1-1];

exit(f[x1,y1,x2,y2]);

end;

begin

read(n,m);

for i:=1 to n do

for j:=1 to m do

read(a[i,j]);

fillchar(s,sizeof(s),0);

for i:=1 to n do

for j:=1 to m do

s[i,j]:=s[i-1,j]+s[i,j-1]-s[i-1,j-1]+a[i,j];

fillchar(f,sizeof(f),$ff);

for i:=1 to n do

for j:=1 to m do

f[i,j,i,j]:=0;

writeln(dp(1,1,n,m));

end.

有什么不对吗?

那位神牛只一下,为什么86分?

一个点超时,两个错了。

难道有优化?还是有什么要注意的?

神牛们,帮帮弱菜吧。

#1 zhang1in@2010-08-09 01:35:00
回复 删除
#2 zhang1in@2010-08-09 01:44:00
回复 删除
查看更多回复
提交回复