您是一个神仙,但您很喜欢采药。
您有一个神奇的背包,背包内有VV个格子。
您所在的空间内有一些药,每个药会占用 11 或 22 个格子。
每天可以进行一次如下操作:
采摘一个药材放入背包中,若此时背包中没有多余的格子来放入新的药材,可以先将背包中的若干药材扔出去,至于扔多少以及扔几个,全都由您决定。当然您也可以选择不去进行采摘操作。
每一天结束前,神奇背包中的每个药材都会产生一个药丸。
作为神仙,您知道每天您可以采摘的药材类型(即占用格子数目),注意,当天的药材如果不采摘,在第二天就会消失(当天药材仅限当天采摘)。
为了获得尽可能多的药丸,请您计算最终能获得的药丸数目最多是多少?
用 python 写的
v = int(input())
s = input()
li = list(map(int,s))
res = 0
p = {1:0,2:0}
l = 0
for x in li:
if x<=v:
p[x] += 1
l += 1
v -= x
elif x==1 and p[2]>0:
p[2] -= 1
p[x] += 1
v += 1
res += l
print(res)
请参考一下背包问题: https://blog.csdn.net/qq_40427276/article/details/96998798