結果
問題 |
No.1284 Flip Game
|
ユーザー |
|
提出日時 | 2021-02-19 08:52:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 321 ms / 2,000 ms |
コード長 | 609 bytes |
コンパイル時間 | 1,812 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 96,128 KB |
最終ジャッジ日時 | 2024-09-15 13:13:40 |
合計ジャッジ時間 | 5,504 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 28 |
ソースコード
import sys sys.setrecursionlimit(10**7) n=int(input()) c=[list(map(int,input().split())) for _ in range(n)] inf=float('inf') memo={} memo[0]=0 d={} for i in range(n): d[2**i+2**(i+n)]=i def func(red,pre): key=(red,pre) if red==0:memo[key]=0 if red in d: i=d[red] return c[pre][i] if key in memo:return memo[key] ret=inf for i in range(n): if i==pre:continue if (red>>i)&1: ret=min(ret,func(red^(1<<i),i)+c[pre][i]) elif (red>>(n+i))&1: ret=min(ret,func(red^(1<<(n+i)),i)+c[pre][i]) memo[key]=ret return ret c.append([0]*n) ret=func(2**(2*n)-1,-1) print(ret)