結果
問題 | No.3158 Collect Stamps |
ユーザー |
|
提出日時 | 2025-05-23 20:07:38 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 357 ms / 2,000 ms |
コード長 | 845 bytes |
コンパイル時間 | 1,134 ms |
コンパイル使用メモリ | 82,144 KB |
実行使用メモリ | 90,088 KB |
最終ジャッジ日時 | 2025-05-23 20:07:46 |
合計ジャッジ時間 | 6,302 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 |
ソースコード
N,M,K=map(int,input().split()) A=list(map(int,input().split())) T=[list(map(int,input().split())) for i in range(N)] #dp[S][i]=訪れた集合がSで現在iにいるときの時間 dp=[[1000000000 for j in range(N)] for i in range(2**N)] ans=1000000000 #dpテーブル初期化 for i in range(N): dp[2**i][i]=0 for i in range(2**N): for j in range(N): ppc=0 for k in range(N): if (i>>k)&1==1: ppc+=1 if ppc>=M: #景品受け取り for k in range(K): ans=min(ans,dp[i][j]+T[j][A[k]-1]) else: #まだ足りないなら for k in range(N): if (i>>k)&1==0: #まだ訪れていないなら dp[i+2**k][k]=min(dp[i+2**k][k],dp[i][j]+T[j][k]) print(ans) #print(dp)