讨论 / 这题是不是有问题啊
liangjs 2013-07-07 23:54:00
点我顶贴 收藏 删除
第一次CE:编译超过6s

第二次CE:找不到“begin”

第三次WA30:过后三点,其余超时+无输出

第四次WA40:过后四点,其余超时+无输出

第五次WA30:过后三点,其余超时+无输出

交的都是一样的程序。。。

var ans,w,i,j,n:integer;

l:array[1..60,0..6] of integer;

f,b:array[0..60] of integer;

function ok:boolean;

var i:integer;

begin

for i:=1 to n do

if b[i]=0 then exit(false);

exit(true);

end;

procedure bb(x:integer);

var i:integer;

begin

for i:=1 to l[x,0] do

inc(b[l[x,i]]);

end;

procedure cadd(x:integer);

begin

inc(f[0]);

f[f[0]]:=x;

bb(x);

end;

procedure del;

var i:integer;

begin

for i:=1 to l[f[f[0]],0] do

dec(b[l[f[f[0]],i]]);

dec(f[0]);

end;

procedure add;

var i:integer;

begin

if f[f[0]]+1<=w then begin

for i:=1 to l[f[f[0]],0] do

dec(b[l[f[f[0]],i]]);

inc(f[f[0]]); bb(f[f[0]]);

end else begin

del;

add;

end;

end;

begin

readln(n,w);

for i:=1 to w do begin

read(l[i,0]);

for j:=1 to l[i,0] do read(l[i,j]);

readln;

end;

ans:=maxint;

while f[1]<>w do begin

if ok then begin

ans:=f[0];

del;

add;

end else

if f[0]+1>=ans then add

else begin

if f[f[0]]+1<=w then cadd(f[f[0]]+1)

else begin

del;

add;

end;

end;

{for i:=1 to f[0] do

write(f[i],' '); writeln;

writeln('ans=',ans);}

end;

if ok then ans:=1;

writeln(ans);

end.

#1 yuyilahanbao@2013-07-07 23:54:00
回复 删除
严重怀疑测试数据有问题
查看更多回复
提交回复