把每位法师第 k 次吸收水晶看成一个“吸收槽位”。
对于初始能量为 a[i] 的法师:
第 1 个槽位代价是 1×a[i]
第 2 个槽位代价是 2×a[i]
在一个魔法世界中,有 n 位法师和 m 个魔法水晶。第 i 位法师拥有初始能量 a[i],第 j 个魔法水晶拥有基础能量 b[j]。当某位法师吸收水晶时,水晶带来的实际收益会随着该法师已经吸收的水晶数量而降低;初始能量越高的法师,这种衰减越快。
若某位初始能量为 a[i] 的法师已经吸收了 k−1 个水晶,接下来吸收基础能量为 b[j] 的水晶(即这是他吸收的第 k 个水晶,k 从 1 开始),则该水晶为法师增加的能量为
若该值不大于 0,则本次吸收不会带来任何能量增长,也不会减少法师原有的能量。
每位法师可以吸收任意多个水晶,也可以不吸收;每个魔法水晶只能被使用一次,并且至多分配给一位法师。现在需要安排这些水晶的使用方式,使得所有法师获得的能量增量总和最大。
约束条件:法师数量 n 和魔法水晶数量 m 均为 1 到 105 之间的整数;每位法师的初始能量 a[i] 和每个魔法水晶的基础能量 b[j] 也均为 1 到 105 之间的整数。
第一行包含两个由空格分隔的整数 n 和 m,分别表示法师数量和魔法水晶数量。
第二行包含 n 个由空格分隔的整数,依次表示每位法师的初始能量 a[1],a[2],…,a[n]。
第三行包含 m 个由空格分隔的整数,依次表示每个魔法水晶的基础能量 b[1],b[2],…,b[m]。
输出一个整数,表示分配水晶后所有法师获得的能量增量总和的最大值。
输入
3 4
2 3 4
10 8 7 5
输出
17
说明
水晶按基础能量从大到小为 10、8、7、5。
一种最优分配为:
2 的法师吸收基础能量 10 的水晶,收益 10−1×2=8。3 的法师吸收基础能量 8 的水晶,收益 8−1×3=5。2 的法师再吸收基础能量 7 的水晶,这是他吸收的第 2 个水晶,收益 7−2×2=3。4 的法师吸收基础能量 5 的水晶,收益 5−1×4=1。总收益为 8+5+3+1=17,因此最大值为 17。
输入
2 4
1 4
6 5 4 3
输出
9
说明
水晶按基础能量从大到小为 6、5、4、3。
分配时,让初始能量为 1 的法师依次吸收:
1 个水晶 6,收益 6−1×1=5。2 个水晶 5,收益 5−2×1=3。3 个水晶 4,收益 4−3×1=1。如果该法师继续吸收基础能量为 3 的水晶,这是第 4 个水晶,收益为 3−4×1=−1,不大于 0,不会带来增长。初始能量为 4 的法师吸收剩余水晶也没有正收益。
因此最大总收益为 5+3+1=9。
输入
1 1
5
3
输出
0
说明
只有一名法师和一个水晶。
该法师初始能量为 5,吸收基础能量为 3 的水晶时,收益为 3−1×5=−2。
该值不大于 0,因此这次吸收不会带来能量增长。最优选择是不使用这个水晶,最大总收益为 0。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册