2 条题解

  • 1
    @ 2025-6-6 20:06:28

    考虑贪心。

    按照 cc 从大到小将每个休息点排序,先吃最大的,一直吃到不能再吃,然后再往后面吃。

    l, n, v1, v2 = map(int, input().split())
    a = []
    for i in range(n):
        start, value = map(int, input().split())
        a.append((start, value))
    
    a.sort(key=lambda x: -x[1])
    
    ans = 0
    a2 = 0
    
    for start, value in a:
        if start * v2 + a2 <= start * v1:
            ans += (start * v1 - start * v2 - a2) * value
            a2 = start * v1 - start * v2
    
    print(ans)
    

    信息

    ID
    987
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    258
    已通过
    32
    上传者