結果
問題 | No.1284 Flip Game |
ユーザー |
![]() |
提出日時 | 2023-02-05 23:26:36 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 471 ms / 2,000 ms |
コード長 | 956 bytes |
コンパイル時間 | 185 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 115,116 KB |
最終ジャッジ日時 | 2024-07-04 08:45:52 |
合計ジャッジ時間 | 5,454 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 28 |
ソースコード
N = int(input())C = []for i in range(N):C.append(list(map(int, input().split())))inf = 10 ** 18N2 = 1 << (2 * N)dp = [[inf] * N for i in range(N2)]for i in range(N):dp[1 << i][i] = 0for s in range(1, N2):for p in range(N):if (s >> p) & 1 == 0:continuefor q in range(N):if p == q:continueif (s >> q) & 1 and (s >> (q + N)) & 1:continue# if (s >> (p + N)) & 1:# ns = s ^ (1 << (p + N))# else:# ns = s ^ (1 << p)if (s >> q) & 1 == 0:ns = s | (1 << q)dp[ns][q] = min(dp[ns][q], dp[s][p] + C[p][q])else:ns = s | (1 << (q + N))dp[ns][q] = min(dp[ns][q], dp[s][p] + C[p][q])ans = min(dp[-1])for i in range(N):ans = min(ans, dp[(N2 - 1)^(1 << (i + N))][i])print(ans)