結果
問題 |
No.3014 岩井満足性問題
|
ユーザー |
![]() |
提出日時 | 2025-01-25 16:38:44 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,293 bytes |
コンパイル時間 | 538 ms |
コンパイル使用メモリ | 12,160 KB |
実行使用メモリ | 30,252 KB |
最終ジャッジ日時 | 2025-01-25 23:54:44 |
合計ジャッジ時間 | 51,515 ms |
ジャッジサーバーID (参考情報) |
judge7 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 5 WA * 2 TLE * 11 |
ソースコード
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 = max(d[K:]) if ans == -INF: print("No") else: print(ans)