讨论 / dp高手速查错。、、、、、、、、、、、、、、、、、、、、
win0000 2011-09-02 08:08:00
点我顶贴 收藏 删除
program game;

var f:array [0..10,0..100,0..1] of longint;

i,j,m,n,min,max:longint; a:array [0..101] of longint;

function minx(x,b:longint):longint;

begin

if x<b then exit(x) else exit(b);

end;

function maxx(x,b:longint):longint;

begin

if x>b then exit(x) else exit(b);

end;

procedure dp;

var di,dj,dk,dl,temp:longint;

begin

for di:=1 to n do f[1,di,0]:=(f[1,di-1,0]+a[di]) mod 10;

for di:=1 to n do f[1,di,1]:=f[1,di-1,0];

for di:=2 to m do

for dj:=1 to n do BEGIN f[di,dj,0]:=maxlongint;

for dk:=1 to dj-1 do

begin

temp:=(f[1,dj,0]-f[1,dk,0]) mod 10;

if temp<0 then inc(temp,10);

f[di,dj,0]:=minx(f[di,dj,0],f[di-1,dk,0]*temp);

f[di,dj,1]:=maxx(f[di,dj,1],f[di-1,dk,1]*temp);

end;end;

end;

begin

assign(input,'game.in');

reset(input);

assign(output,'game.out');

rewrite(output);

readln(n,m); min:=maxlongint;max:=0; fillchar(a,sizeof(a),0);

for i:=1 to n do begin readln(a[i]);if a[i]<0 then inc(a[i],10);a[i+n]:=a[i];end;

for i:=1 to n do begin for j:=1 to 100 do a[j]:=a[j+1];

fillchar(f,sizeof(f),0);

dp;

if min>f[m,n,0] then min:=f[m,n,0];

if max<f[m,n,1] then max:=f[m,n,1];

end;

writeln(min);

writeln(max);

close(input);

close(output);

end.

wa======================00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

#1 win0000@2010-11-14 07:18:00
回复 删除
tttttttttttttttttttttt

nobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobadynobady

#2 wjltz@2011-09-02 08:08:00
回复 删除
是nobody吧

有负数吧在mod10的地方

查看更多回复
提交回复