dp凸优化/带权二分 学习笔记

我是不会说我是想写林克卡特树才来学这个东西的

dp凸优化/带权二分

这个东西其实挺有用的,

dp凸优化是来解决这类问题的

你有一些操作,操作\(i\)会对答案有贡献\(w_i\),选的操作越多,\(w_i\)越小/大

问恰好进行\(k\)次操作所得到的最大/小答案

普通解法

额外记一维\(k\)表示进行了\(k\)次操作

复杂度\(O(nk)\)

\(dp\)凸优化

先考虑去掉\(k\)这个限制

假设我们要求最大贡献,

我们给每个物品一个附加权值\(C\)

显然\(C\)越大时

我们选的物品个数越多

于是我们就可以二分这个\(C\),来让物品个数刚好等于这个\(k\)

具体的,

当物品个数\(>C\)时,我们调小\(C\)

否则调大\(C\)

最后的答案减去\(C*k\)即可.

为什么叫凸优化呢?

因为这个优化要满足,以k为横坐标,\(f[n][k]\)为纵坐标,图像形成一个上凸包

我们调整\(C\)的过程就是以一条斜率为\(C\)的斜线去切这个凸包,以得到\(x=k\)这个点的最大值,

所以我们要求的截距当然要减去\(Cx\)

当然可能出现凸包上两点斜率等于切线斜率的时候

但这并没有关系

以下是\(wqs\)的论文(?)

如果发现\(C\)\(x\)时,所有最优解中最小的分段数大于\(K\),而取\(x+1\)时最小的分段数小于\(K\),那么\(C\)\(x+1\)时也存在分段数为\(K\)的最优解,只需取此时的最优答案减\((x+1)K\)

也就是我们选择大的那个更新答案并没有问题,因为斜率是一样的

转载于:https://www.cnblogs.com/LLCSBlog/p/11629848.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值