1 条题解

  • 0
    @ 2025-8-24 23:17:21

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar CJY
    小升初蒟蒻||/article/ugxlm066/team/87748||没有一根棒棒糖解决不了的事情,如果有,就再来一根||最后在线时间:2025年8月24日20时21分

    搬运于2025-08-24 23:17:21,当前版本为作者最后更新于2025-07-20 15:30:18,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    官解讲得不太清楚,特来补一篇。

    思路

    bij=1i1bjb_i \ge \sum\limits_{j=1}^{i-1} b_j 时,si=ai×bi=ai+ai×(bi1)s_i=a_i \times b_i=a_i+a_i \times (b_i-1),所以设权值为 ai×(bi1)a_i \times (b_i-1)

    然后将 bb 排序,记得用结构体绑定 a,ba,b 再进行排序。

    kk 为当前 bib_i 的总和,接下来从 min(k,bi)\min(k,b_i) 开始向前枚举,避免重复计算。

    我们设 fif_i 为当前已选同学的 bib_i 之和为 ii 时,能获得的最大额外权值和,动态转移方程过于明显,没什么好讲的:

    fj+bi=max(fj+bi,fj+ai×(bi1))f_{j+b_i}=\max(f_{j+b_i},f_j+a_i \times (b_i-1))

    然后更新总礼物价值 kk+bik \gets k+b_i

    结果就为 $\left(\max\limits_{i=1}^{5 \times 10^6}f_i\right)+\sum\limits_{i=1}^na_i$,i=1nai\sum\limits_{i=1}^na_i 就是把 ai+ai×(bi1)a_i+a_i \times (b_i-1) 中的 aia_i 加上,因为我们设的权值是 ai×(bi1)a_i \times (b_i-1)

    注意要开 long longff 的范围要开到 5×1065 \times 10^6 而不是 5×1055 \times 10^5

    有问题请指出!

    • 1

    信息

    ID
    12074
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者