炒香菇的书呆子 2021-03-14 12:08 采纳率: 0%
浏览 206
已结题

算法题,编程语言不限,c,java,py

 

您是一个神仙,但您很喜欢采药。

您有一个神奇的背包,背包内有VV个格子。

您所在的空间内有一些药,每个药会占用 11 或 22 个格子。

每天可以进行一次如下操作:

采摘一个药材放入背包中,若此时背包中没有多余的格子来放入新的药材,可以先将背包中的若干药材扔出去,至于扔多少以及扔几个,全都由您决定。当然您也可以选择不去进行采摘操作。

每一天结束前,神奇背包中的每个药材都会产生一个药丸。

作为神仙,您知道每天您可以采摘的药材类型(即占用格子数目),注意,当天的药材如果不采摘,在第二天就会消失(当天药材仅限当天采摘)。

为了获得尽可能多的药丸,请您计算最终能获得的药丸数目最多是多少?

 

  • 写回答

2条回答 默认 最新

  • 天际的海浪 2021-03-14 16:12
    关注

    用 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)
    
    评论

报告相同问题?