讨论 / 286_数据有误
Hoblovski 2013-07-29 03:56:00
点我顶贴 收藏 删除
数据有误。

原因估计是 作者的标程中剪枝写的是 if dep>=best-1 ...

但是由于本题要求输出方案,不能这样剪枝。

http://www.rqnoj.cn/Status_Show.asp?SID=955492 这个是WA70

http://www.rqnoj.cn/Status_Show.asp?SID=955495 这个是AC

AC程序

program rq286;

var n:longint;

best,t:longint;

que,bestque:array[1..20] of longint;

getmin:array[1..1000] of longint;

rect:qword;

const maxint=$3f3f3f3f;

procedure dfs(stp:longint);

var i,j:longint;

begin

if que[stp]=n then begin

if stp<best then begin

best:=stp;

bestque:=que;

end else if stp=best then begin

i:=stp-1;

while que[i]=bestque[i] do dec(i);

if que[i]>bestque[i] then bestque:=que;

end;

exit;

end;

if (stp>=best【-1】{这个是AC与WA唯一不同})or(que[stp]>n)or(getmin[que[stp]]<stp) then exit;

getmin[que[stp]]:=stp;

for i:=stp downto 1 do

for j:=i downto 1 do

if (que[i]+que[j]>que[stp]) then begin

que[stp+1]:=que[i]+que[j];

dfs(stp+1);

end else break;

end;

begin

readln(n);

fillchar(getmin,sizeof(getmin),$3f);

que[1]:=1; best:=maxint; getmin[1]:=1;

dfs(1);

writeln(best-1);

for t:=1 to best-1 do write(bestque[t],' ');

writeln(bestque[best]);

end.

#1 107229HR@2013-07-29 03:56:00
回复 删除
Mark

坐等renqing.....

查看更多回复
提交回复