火消し人の奴、興味なかったけど、大学の人がやってたの見て急にやりたくなった
昔勉強した知識だとこういうのはDPでできるはずって思って書いてみたけどテストケース3/7しか通らなかった
偏差値44とか言っててショックすぎる
if __name__ == '__main__': m = input() n = input() dp = { 0: 0 } answer = float('inf') for l in range(n): num, cost = map(lambda x: int(x), raw_input().split()) keys = dp.keys() for src in keys: dst = src + num if dst in keys: dp[dst] = min(dp[dst], dp[src] + cost) else: dp[dst] = dp[src] + cost if dst >= m: answer = min(answer, dp[dst]) print(answer)
ぐぐったら解答公開してる人いた
- C言語 - paiza POH kirishima #paizahack_lite - Qiita
- PythonでpaizaオンラインハッカソンLiteに挑戦した - 唯物是真 @Scaled_Wurm
コード読んだけど、簡単な解法の方は自分のコードと大体同じ事してるような気がする。
どこがおかしいんだ……