結果
| 問題 |
No.1284 Flip Game
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2020-11-06 23:24:20 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,035 bytes |
| コンパイル時間 | 222 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 79,104 KB |
| 最終ジャッジ日時 | 2024-07-22 13:45:22 |
| 合計ジャッジ時間 | 11,276 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 TLE * 3 |
ソースコード
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]
Q.append((i,shuku(A)))
A[i]-=1
A=[0]*N
Q=[]
for i in range(N):
A[i]+=1
DP[i][shuku(A)]=0
Q.append((i,shuku(A)))
A[i]-=1
while Q:
f,x=Q.pop()
calc(x,f)
print(ANS[0])
titia