最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • 超市

    正文概述 陈老师   2026-01-20 15:31:21  

    题目描述

    一家超市有一组产品 ProdProd 在出售。它为每个在截止时间 dxdx 之前售出的产品 xProdx∈Prod 赚取利润 pxpx,截止时间 dxdx 是从销售开始时算起的整数单位时间。每件产品的销售恰好需要一个时间单位。

    销售计划是一个有序的产品子集 SellProdSell ≤ Prod,使得根据 SellSell 的顺序,每个产品 xSellx∈Sell 的销售在截止时间 dxdx 之前或刚好在 dxdx 到期时完成。销售计划的利润为 Profit(Sell)=xSellpxProfit(Sell)=\sum_{x∈Sell}px。最优销售计划是利润最大的计划。

    image

    例如,考虑产品 Prod={a,b,c,d}Prod=\{a,b,c,d\},其中 (pa,da)=(50,2)(pa,da)=(50,2)(pb,db)=(10,1)(pb,db)=(10,1)(pc,dc)=(20,2)(pc,dc)=(20,2)(pd,dd)=(30,1)(pd,dd)=(30,1)。可能的销售计划列在上表中。例如,计划 Sell={d,a}Sell=\{d,a\} 显示产品 dd 的销售从时间 00 开始,到时间 11 结束,而产品 aa 的销售从时间 11 开始,到时间 22 结束。这些产品都在其截止时间前售出。SellSell 是最优计划,其利润为 8080

    输入格式

    本题包含多组测试样例。

    每组样例以整数 0<=n<=1040 <= n <= 10^4 开始,这是产品集的数量,然后是 nn 对整数 pi,dipi,di1<=pi<=1041 <= pi <= 10^41<=di<=1041 <= di <= 10^4,分别表示第 ii 个产品的利润和销售截止时间。输入数据以文件结尾结束,并保证正确。

    数据保证所有测试样例 nn 的总和不会超过 10410^4

    输出格式

    对于每个测试样例,程序打印出该组的最优销售计划的利润。每个结果从单独的一行开始打印。

    样例

    4
    50 2
    10 1
    20 2
    30 1
    7
    20 1
    2 1
    10 3
    100 2
    8 2
    5 20
    50 10
    
    80
    185
    
    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » 超市