結果
問題 |
No.2152 [Cherry Anniversary 2] 19 Petals of Cherry
|
ユーザー |
👑 ![]() |
提出日時 | 2022-12-06 22:59:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 242 ms / 1,000 ms |
コード長 | 1,121 bytes |
コンパイル時間 | 329 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 84,352 KB |
最終ジャッジ日時 | 2024-10-14 18:05:33 |
合計ジャッジ時間 | 12,070 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
ソースコード
def Determinant(A): from copy import deepcopy N=len(A) A=deepcopy(A) det=1 for i in range(N): Ai=A[i] for j in range(i+1, N): Aj=A[j] while Aj[i]: alpha=Ai[i]//Aj[i] if alpha: for k in range(i, N): Ai[k]-=alpha*Aj[k] A[i], A[j]=A[j], A[i] Ai=A[i]; Aj=A[j] det*=-1 det*=Ai[i] if det==0: break return det #================================================== def solve(): N=19; U=1<<N B=[[0]*N for _ in range(N)] for i in range(N): _,*Ai=map(int,input().split()) for a in Ai: B[i][a-1]=1 bit=lambda S,k:(S>>k)&1 popcount=[0]*U DP=[0]*U; DP[0]=1 for S in range(U): t=popcount[S]=(popcount[S>>1]+(S&1)) for i in range(N): if bit(S,i)==0 and B[t][i]: DP[S|(1<<i)]+=DP[S] Y=DP[-1] Z=Determinant(B) return (Y+Z)//2, (Y-Z)//2 #================================================== print(*solve())