結果
問題 | No.2814 Block Game |
ユーザー |
![]() |
提出日時 | 2024-07-19 23:20:13 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,672 bytes |
コンパイル時間 | 340 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 78,336 KB |
最終ジャッジ日時 | 2024-07-19 23:20:31 |
合計ジャッジ時間 | 17,051 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | WA * 20 |
ソースコード
memo={}def naive(n,c0,c1,d0,d1,f):if n==0:return f==0if (c0,c1,d0,d1,f) in memo:return memo[(c0,c1,d0,d1,f)]mex=set()if c0>0 and d0>0:mex.add(naive(n-1,c0-1,c1,d0-1,d1,f^1))if c1>0 and d0>0:mex.add(naive(n-1,c0,c1-1,d0-1,d1,f^1))if c0>0 and d1>0:mex.add(naive(n-1,c0-1,c1,d0,d1-1,f^1))if c1>0 and d1>0:mex.add(naive(n-1,c0,c1-1,d0,d1-1,f))g=0while g in mex:g+=1memo[(c0,c1,d0,d1,f)]=greturn gdef check(n,c0,c1,d0,d1,f):if min(c0,c1,d0,d1)==0:if c0==0:sm=d1%2elif c1==0:sm=0elif d0==0:sm=c1%2else:sm=0return (sm&1)==fif n%2==1:return Trueif min(c0,c1,d0,d1)==1:return Truereturn Falseif 0:for n in range(1,9):for c0 in range(n+1):for d0 in range(n+1):for f in range(2):c1=n-c0d1=n-d0#print((n,c0,c1,d0,d1,f),naive(n,c0,c1,d0,d1,f))# if naive(n,c0,c1,d0,d1,f)==0:# if min(c0,c1,d0,d1)>=1:# print("lose",n,(c0,c1,d0,d1,f))# elif min(c0,c1,d0,d1)>=1:# print("win",n,(c0,c1,d0,d1,f))ans1=(naive(n,c0,c1,d0,d1,f)>=1)ans2=check(n,c0,c1,d0,d1,f)if ans1!=ans2:print(n,(c0,c1,d0,d1,f),ans1,ans2)def binom(n,r):return int((n&r)==r)def count(n):c=0for i in range(60):if (n>>i)&1:c+=1return 1<<cdef solve(n,s):f=(s=="Even")c1=count(n-1)c0=n-c1d0=n//2d1=n-d0if check(n,c0,c1,d0,d1,f):print("Alice")else:print("Bob")for _ in range(int(input())):n,s=input().split()solve(int(n),s)