Educational DP Contest B - Frog 2で、以下コードでどうしてもTLEになるケースがあり、PyPyで提出したところあっさりACとなる。
後々調べてみると、同じアルゴリズムでも使用言語によってはACとなるケースがあるとのこと(参考)。
PyPyで実装されていないライブラリを利用するケース以外は、PythonユーザはPyPyを選択した方がよさそう。
ただ、結構メモリを食うので注意が必要。
Frog1で試してみたところ、同じソースで4倍程メモリを食っている。
言語 | メモリ |
---|---|
Python(3.82) | 20524 KB |
PyPy3 (7.3.0) | 84904 KB |
import sys
sys.setrecursionlimit(250000)
input = sys.stdin.readline
def main():
n, k = map(int, input().split())
h = list(map(int,input().split()))
cost = [sys.maxsize]*n
cost[0] = 0
for i in range(0,n):
for j in range(1, k + 1):
if (i+ j>= n):
break
abs_ = abs(h[i] - h[i+j])
if cost[i+j] >cost[i] + abs_ :
cost[i+j] = cost[i] + abs_
print(cost[n-1])
main()