核心思路
一次改挂只是把一篇成稿从某个方向挪到另一个方向,全集篇数不变,操作次数等于所有「被补上的篇数」之和。最终局面可以用两个整数刻画:达到阈值 b 的方向个数 x,以及全局下限 t=min(y,b)。此时至少要锁住 x⋅b+(n−x)⋅t 篇成稿,且把选定的 x 个方向抬到 b、其余方向抬到 t 的搬动次数不能超过 k。
对固定的 x,应当选当前成稿最多的 x 个方向去冲 b:把一个方向定为「达标」相对定为「只保证下限 t」的额外代价随 ai 增大而减小,因此选最大的 x 个最优。余下方向的最大可行 t 可以二分。枚举 x=0,1,…,n,取 x⋅c1+t⋅c2 的最大值。
只贪 x 或只贪 t 都会漏掉另一侧;用 y 直接乘 c2 而不与 b 取 min 会在 y>b 时算高;中间乘积必须用 64 位整数。
某技术社区举办「全能作者季」。你在 n 个专栏方向上各有若干成稿:第 i 个方向现有 ai 篇。
你可以把一篇成稿从方向 i 改挂到方向 j(须保证该方向改挂后篇数非负)。每改挂一篇计一次操作,最多操作 k 次。
改挂结束后,设 x 为成稿数不少于 b 篇的方向个数,y=min(a1,a2,…,an),综合评分定义为
x⋅c1+min(y,b)⋅c2保证 c1≥c2。请最大化综合评分。
第一行五个整数 n、k、b、c1、c2。
第二行 n 个整数 a1,a2,…,an。
输出一个整数,表示可达到的综合评分最大值。
输入
5 3 4 4 1
1 2 5 0 3
输出
9
说明
一种方案:从第 3 个方向改挂 1 篇到第 5 个方向,再从第 2 个方向改挂 1 篇到第 4 个方向,各方向成稿数为 [1,1,4,1,4]。此时 x=2,y=1,min(y,b)=1,评分为 2×4+1×1=9。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册