1 条题解

  • 0
    @ 2025-8-24 23:05:54

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Exp10re
    My awAKen Dream.

    搬运于2025-08-24 23:05:54,当前版本为作者最后更新于2024-11-15 17:28:39,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    做法来自

    https://www.luogu.com.cn/user/600774
    授权。

    给一种证明部分完全与反悔无关的做法,会比反悔思路简单很多。

    解题思路

    考虑如下做法:

    • 添加 nn 张限制为 aia_i,优惠为 aibia_i-b_i 的虚空优惠券。
    • 然后仅考虑 nn 件商品的原价以及这 n+mn+m 张优惠券,用它们进行朴素贪心 ^\dagger,得到的答案即为本题的答案。

    \dagger:参考 ABC308F,将物品以及优惠券排序后从小到大枚举物品,然后将满足限制的优惠券加到大根堆中贪心的使用最大的优惠券。

    我们考虑为什么这么做是对的:容易发现这么做唯一的问题在于可能有一个原价不为 aia_i 的商品 aja_j 使用了 aia_i 产生的虚空优惠券,根据贪心这个时候 aia_i 会使用另一张优惠券减 xx 元,记这一张优惠券的限制为 limlim

    可以发现 aja_j 会抢走 aia_i 的虚空优惠券的一个必要条件是 ajaia_j\geq a_i,又有 limaiajlim\leq a_i \leq a_j,故此时交换 aia_iaja_j 的优惠券可以使得 aia_i 使用自己产生的虚空优惠券,即使用原先的 bib_i 折扣,并且不会产生任何额外代价。

    故经过若干次交换可以使得每一个商品使用原先给出的优惠券以及自己的虚空优惠券,并且在此限制条件下不会产生比朴素贪心更高的代价,故正确性得证。

    时间复杂度 O(nlog(n+m))O(n\log (n+m))

    • 1

    信息

    ID
    10886
    时间
    2000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    0
    已通过
    0
    上传者