結果
| 問題 | No.134 走れ!サブロー君 | 
| コンテスト | |
| ユーザー |  Tawara | 
| 提出日時 | 2015-12-31 13:51:18 | 
| 言語 | Python2 (2.7.18) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 506 ms / 5,000 ms | 
| コード長 | 524 bytes | 
| コンパイル時間 | 509 ms | 
| コンパイル使用メモリ | 6,912 KB | 
| 実行使用メモリ | 9,600 KB | 
| 最終ジャッジ日時 | 2024-10-14 17:15:11 | 
| 合計ジャッジ時間 | 2,750 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 15 | 
ソースコード
R=range;I=lambda:map(float,raw_input().split());x,y=I();N=input() M=10**6;U=1<<N;A=[I() for i in R(N)]+[[x,y,0]] D=[N*[M]for i in R(U)];W=[0]*U;W[0]=sum(A[i][2]for i in R(N)) f=lambda i,j,k:(abs(A[i][0]-A[j][0])+abs(A[i][1]-A[j][1]))*(W[k]+100)/120+A[j][2] for i in R(N):D[1<<i][i]=f(N,i,0);W[1<<i]=W[0]-A[i][2] for i in R(U): for j in R(N): b=1<<j;n=i+b if i&b:continue W[n]=W[i]-A[j][2] for k in R(N): if D[i][k]==M:continue D[n][j]=min(D[n][j],D[i][k]+f(k,j,i)) print min(D[U-1][i]+f(i,N,U-1)for i in R(N))
