結果
問題 | No.1937 Various Tournament |
ユーザー |
![]() |
提出日時 | 2022-05-18 03:33:47 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,346 ms / 2,000 ms |
コード長 | 1,337 bytes |
コンパイル時間 | 182 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 79,596 KB |
最終ジャッジ日時 | 2024-09-16 02:47:47 |
合計ジャッジ時間 | 40,149 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 47 |
ソースコード
from collections import CounterN=int(input())S=[list(map(int,input().split())) for i in range(N)]ANS=[0]*Ndef listbit(x):for i in range(1<<x):count=0for j in range(x):if i & (1<<j) != 0:count+=1if count==x//2 and i & (1<<0)==0:yield iLBIT=[-1]*20LBIT[2]=list(listbit(2))LBIT[4]=list(listbit(4))LBIT[8]=list(listbit(8))LBIT[16]=list(listbit(16))def win(x,y):if S[x][y]==1:return xelse:return ydef calc(X,f):if len(X)==2:a,b=X[0],X[1]DX=Counter()if S[a][b]==1:DX[a]=felse:DX[b]=freturn DXDD=Counter()for i in LBIT[len(X)]:Y=[]Z=[]for j in range(len(X)):if i & (1<<j) == 0:Y.append(X[j])else:Z.append(X[j])#print("!",Y,Z)if len(Y)==len(X)//2:#print(Y,Z)D1=calc(Y,f)D2=calc(Z,f)for d1 in D1:for d2 in D2:DD[win(d1,d2)]+=D1[d1]*D2[d2]return DDD=calc(list(range(N)),1)if N==2:k=2elif N==4:k=4*2elif N==8:k=16*8else:k=16*16*128for i in range(N):print(D[i]*k)