博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[学习笔记]凸优化/WQS二分/带权二分
阅读量:7105 次
发布时间:2019-06-28

本文共 502 字,大约阅读时间需要 1 分钟。

从一个题带入:

比较详细的:

 

简单总结和补充:

条件

凸函数,限制

方法:

二分斜率,找切点横纵坐标,判断k的位置

找切点坐标:

集体-mid*x(证明还是凸函数:f(x+2)-f(x+1)<=f(x+1)-f(x))仍然成立)

每次选择物品有额外代价,

找此时高点就是原凸包切点

 

为了避免凸包上多点共线并且线的横坐标区域包含k,从而使得不会二分到k,

我们ans不记录符合条件切点的纵坐标,而是记录下来符合切点坐标(大于等于/小于等于)k的(最大/最小)斜率。(因题而异)

最后把斜率带进去求出纵坐标,然后向上平移ans*k即可

进阶:

k是一个区间[l,r]也可以做

法一:求出最高点选择的最大值最小值,根据斜率再调整

法二:求出l位置的切点斜率k1,r位置的切点斜率k2,如果k1,k2异号,k=0的切点就是最优位置,否则,绝对值更小的k的l或者r就是最优解位置

 

感悟

利用凸函数上二分,再转化为求“任意选择”全局最优解,使得摆脱了k的限制,使得DP维数降低,O(n^2)-O(nlogn)

 

转载于:https://www.cnblogs.com/Miracevin/p/10408004.html

你可能感兴趣的文章
IOS上路_17-简单示例-数据库
查看>>
tomcat使用delegate分析
查看>>
用"再生龙"Clonezilla 来克隆Linux系统!!
查看>>
pomelo命令行管理pomelo项目
查看>>
基于Spring MVC 的微信用户Controller基类
查看>>
C语言中的Warning到底调不调
查看>>
Yii中使用swfupload批量上传图片
查看>>
mysql主从同步(2)-问题梳理
查看>>
为什么Lisp语言如此先进?
查看>>
hive(05)、使用JAVA对数据仓库HIVE进行操作
查看>>
java多线程-内存模型
查看>>
MySQL按照同一字段的不同值求和某一列
查看>>
百万级访问量网站的技术准备工作
查看>>
yii2 行为和Trait
查看>>
APPSTORE时下热门应用数量
查看>>
Android自定义View的实现 (重要的内容)
查看>>
Redis被bgsave和bgrewriteaof阻塞的解决方法
查看>>
Boost::filesystem 使用小笔记
查看>>
java毕业设计自学入门教程
查看>>
为什么传统的婚姻和家庭会消解?
查看>>