結果
| 問題 |
No.2386 Udon Coupon (Easy)
|
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2025-10-29 01:24:32 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 736 bytes |
| コンパイル時間 | 2,669 ms |
| コンパイル使用メモリ | 82,200 KB |
| 実行使用メモリ | 76,720 KB |
| 最終ジャッジ日時 | 2025-10-29 01:24:40 |
| 合計ジャッジ時間 | 4,652 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 4 TLE * 1 -- * 32 |
ソースコード
from collections.abc import Iterable
def accum_dp1(xs: Iterable, f, op, e, size: int, init: Iterable, *, is_reset=True):
dp = [e] * size
for i, v in init:
dp[i] = v
for x in xs:
pp = [e] * size if is_reset else dp.copy()
dp, pp = pp, dp
for i in range(size):
for p, v in f(i, pp[i], x):
if not (0 <= p < size): continue
dp[p] = op(dp[p], v)
return dp
N = int(input())
A, B, C = map(int, input().split())
def f(i, v, x):
for k, p in [(3, A), (5, B), (10, C)]:
if i+k > N: break
yield i+k, v+p
def op(a, b):
return max(a, b)
dp = accum_dp1(range(N+1), f, op, 0, N+1, [], is_reset=False)
ans = dp[N]
print(ans)
norioc