結果
| 問題 |
No.1284 Flip Game
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2020-11-06 23:28:09 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 566 ms / 2,000 ms |
| コード長 | 1,059 bytes |
| コンパイル時間 | 148 ms |
| コンパイル使用メモリ | 82,576 KB |
| 実行使用メモリ | 81,484 KB |
| 最終ジャッジ日時 | 2024-07-22 13:46:10 |
| 合計ジャッジ時間 | 6,625 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 28 |
ソースコード
import sys
input = sys.stdin.readline
N=int(input())
C=[list(map(int,input().split())) for i in range(N)]
ANS=[1<<60]
DP=[[1<<60]*(3**N) for i in range(N)]
def shuku(A):
k=0
for i in range(N):
k+=A[i]*(3**i)
return k
def modos(x):
S=[0]*N
for i in range(N):
S[i]=(x%(3**(i+1)))//(3**i)
return S
def calc(xx,f):
A=modos(xx)
if sum(A)==2*N:
ANS[0]=min(ANS[0],DP[f][xx])
return
if sum(A)==2*N-1:
x=A.index(1)
if x==f:
ANS[0]=min(ANS[0],DP[f][xx])
return
for i in range(N):
if i==f:
continue
if A[i]==2:
continue
A[i]+=1
if DP[i][shuku(A)]>DP[f][xx]+C[f][i]:
DP[i][shuku(A)]=DP[f][xx]+C[f][i]
A[i]-=1
A=[0]*N
for i in range(N):
A[i]+=1
DP[i][shuku(A)]=0
A[i]-=1
from itertools import product
L=sorted(product([0,1,2],repeat=N),key=sum)
for l in L:
for i in range(N):
calc(shuku(l),i)
print(ANS[0])
titia