bzoj 1022 博弈 Anti-Nim(模板)

61 篇文章 0 订阅
10 篇文章 0 订阅

具体证明请见贾志豪大犇的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=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值