蟻本 2-3 個数制限付き部分和問題
code: python
n = int(input())
a = list(map(int, input().split()))
m = list(map(int, input().split()))
K = int(input())
dp = [-1 * (K + 1) for i in range(n + 1)]
# dpi + 1j := i 番目までで j を作る際余る最大の i 番目の個数(作れない場合は -1)
dp00 = 0
for i in range(n):
for j in range(K + 1):
# 既にできてる
if dpij >= 0:
# 個数は減らない
dpi + 1j = mi
# 数aiが大きすぎる、または、ai足したとしてもj作れない
elif j < ai or dpi + 1[j - ai] <= 0:
dpi + 1j = -1
else:
dpi + 1j = dpi + 1[j - ai] - 1
if dpnK >= 0:
print("Yes")
else:
print("No")
テーマ
#dp