DP凸优化/带权二分

对于如要求选mmm个东西的最优化问题,f[i][..]f[i][..]f[i][..]表示选了iii个东西的答案,则DP的时间和空间复杂度必然都与mmm线性相关。但如果f[i]f[i]f[i]关于iii是一个斜率单调不增的函数(凸函数),则可以使用DP凸优化将复杂度降为与log⁡m\log mlogm线性相关。

考虑将f[]f[]f[]中的iii这一维去掉,但这样就没法保证选mmm个。于是考虑将选择一个物品的代价提高kkk,则此时选的东西必然减少。于是我们二分kkk的值,每次做一遍DP求出对于当前kkk实际选的物品个数,使选的物品个数等于mmm。但此时每个物品的代价是修改过的,将答案减去mkmkmk即可。

注意二分的时候有可能找不到刚好选mmm个的kkk,此时根据题目要求取相近的kkk即可。

与一类DP方程的联系

给定一个带权序列,将序列分为kkk段,设每段和为sis_isi,求∑f(si)\sum f(s_i)f(si)的最小值,其中fff的斜率单调不减(四边形不等式)。

可以直接用DP凸优化做。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值