具体证明请见贾志豪大犇的2009论文 orz,这里直接贴结论:
对于Anti-SG 的:
1、如果所有子游戏的SG异或和=0且所有子游戏的SG<=1则先手必胜
2、如果所有子游戏的SG异或和<>0且存在子游戏的SG>1则先手必胜
两种情况都不满足的则先手必输
代码:
var
t,n,cnt,tot :longint;
i :longint;
a,sg :array[0..55] of longint;
begin
read(t);
while (t<>0) do
begin
dec(t);
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do sg[i]:=a[i];
tot:=0;
for i:=1 to n do if sg[i]>1 then inc(tot);
cnt:=0;
for i:=1 to n do cnt:=cnt xor sg[i];
if (cnt<>0) and (tot>0) then writeln('John') else
if (cnt=0) and (tot=0) then writeln('John') else writeln('Brother');
end;
end.
——by Eirlys
转载请注明出处=w=