結果
| 問題 | No.134 走れ!サブロー君 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2016-10-06 14:55:12 | 
| 言語 | Python2 (2.7.18) | 
| 結果 | 
                                RE
                                 
                             | 
| 実行時間 | - | 
| コード長 | 709 bytes | 
| コンパイル時間 | 77 ms | 
| コンパイル使用メモリ | 6,912 KB | 
| 実行使用メモリ | 16,092 KB | 
| 最終ジャッジ日時 | 2024-11-21 18:34:40 | 
| 合計ジャッジ時間 | 1,403 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 8 RE * 7 | 
ソースコード
sakaya = map(int, raw_input().split())
N = input()
points = [map(int, raw_input().split()) for _ in xrange(N)]
W = sum(p[2] for p in points)
def cost(p1, p2, weight):
    T = (weight+100.0)/120
    return abs(p1[0]-p2[0])*T + abs(p1[1]-p2[1])*T
mem = {}
def rec(p, b, w):
    if (p, b) in mem:
        return mem[(p, b)]
    w -= points[p][2]
    if b == ((1 << N) - 1):
        return cost(sakaya, points[p], w)+points[p][2]
    m = float('inf')
    for i in xrange(N):
        if (1 << i) & b:
            continue
        m = min(m, rec(i, (1<<i)+b, w)+cost(points[p], points[i], w)+points[p][2])
    mem[(p, b)] = m
    return m
print min(rec(x, 1<<x, W)+cost(sakaya, points[x], W) for x in xrange(N))
            
            
            
        