結果

問題 No.3014 岩井満足性問題
ユーザー yamasaKit_
提出日時 2025-01-25 16:43:11
言語 PyPy3
(7.3.15)
結果
MLE  
実行時間 -
コード長 1,287 bytes
コンパイル時間 529 ms
コンパイル使用メモリ 82,652 KB
実行使用メモリ 363,392 KB
最終ジャッジ日時 2025-01-25 23:54:51
合計ジャッジ時間 20,901 ms
ジャッジサーバーID
(参考情報)
judge13 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 MLE * 1
other AC * 7 WA * 6 TLE * 3 MLE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import *
from itertools import *
from functools import cache, partial
from pprint import pprint
import sys
from typing import Any, Final

try:
    from icecream import ic
except ImportError:  # Graceful fallback if IceCream isn't installed.
    ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a)  # noqa
debug = partial(print, file=sys.stderr)
dpprint = partial(pprint, stream=sys.stderr)
sys.setrecursionlimit(10**6)
MOD = 998244353

N, D, K = map(int, input().split())
A = list(map(int, input().split()))
C = list(map(int, input().split()))
INF = float("inf")

# dp([i])[j][k] := i 番目まで考えたときに j 個の問題を採用し美しさが k の時の最大の満足度
ic(N, D, K)
ic(A, C)

dp = [[-INF] * (K + 1) for _ in range(D + 1)]
dp[0][0] = 0

for i in range(N):
    dp2 = [[-INF] * (K + 1) for _ in range(D + 1)]
    a = A[i]
    c = C[i]
    for j in range(D):
        # 問題 i を採用しない
        for k in range(K + 1):
            dp2[j][k] = max(dp2[j][k], dp[j][k])
        # 問題 i を採用する
        for k in range(K + 1):
            dp2[j + 1][min(K, k + c)] = max(dp2[j + 1][min(K, k + c)], dp[j][k] + a)

    dp = dp2
    # ic(dp)

d = dp[D]

ans = d[K]
if ans == -INF:
    print("No")
else:
    print(ans)
0