4 条题解

  • 1
    @ 2024-5-29 19:39:50

    思路是每次跑到最近的价格更便宜的油站就不加油了。洛谷上有升级版,但是思路类似 旅行家的预算

    n,d = map(int, input().split())
    do = [0]
    p = []
    do += list(map(int, input().split()))
    p += list(map(int, input().split()))
    do += [0]
    p += [0]
    
    kn = 0 # 当前的油站标号
    ans = 0
    pp = 0 # 油量需要跑多远
    n += 1
    
    for i in range(1, n):
        pp += do[i]
        if (p[i]<p[kn]):
            ls = pp//d # 加几升
            if (ls*d!=pp) :
                ans += max(0, (ls+1)*p[kn])
                pp = pp-(ls+1)*d # 油有剩余,记录一下
            else :
                ans += max(0, ls*p[kn])
                pp = 0
            kn = i # 刷新所在油站
    print(ans)
    

    信息

    ID
    935
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    319
    已通过
    48
    上传者