首页 > 其他分享 >WQS 二分 & 凸优化dp

WQS 二分 & 凸优化dp

时间:2024-06-10 09:14:12浏览次数:16  
标签:二分 log WQS 凸性 dp DP lambda

WQS 二分

决策单调性,四边形不等式

\(O(nk\log n) \to O(n\log n)\)

想法

转移转成最短路。

最短路,转移代价 \(\to\) 边权。

恰好选 k 条边的最短路为 \(f\)。

\(f\) 必须有凸性。

加上额外代价\(\lambda\):

  • \(\lambda \to \inf\), 选 1 边

  • \(\lambda \to -\inf\), 选 n 边

  • 二分

最小化 \(\lambda k+f_k\)。

满足四边形不等式一定凸。

\[2f_{k+1} \le f_k+f_{k + 2} \]

通常跟决策单调性一起用。

\[w(i,j) \to w(i,j)+\lambda \]

对于满足四边形不等式的序列DP可做到 \(O(n\log n \log W)\)。

对于有的二维限制就 wqs二分套 wqs 二分。

题目

[IOI2016] aliens

如果一个点在对角线下面,翻上去。

如果一个点右上角有点,就直接把这个点删掉。

对剩下的点作 DP

\(j + 1 \to i\), 减去重叠部分。

因为拍的越多越优,所以直接拍 \(k\) 张。

tree

板子。

Rikka with K-Match

因为可以用费用流,所以是凸性。

注意wqs二分上限 \(n*m*W\)。

有可能当 \(k \to k+1\) 时,可能 \(0 \to \dfrac{nmW}{2}\)

林克卡特树林克卡特树

等价于搞 k+1 个连通块然后直径加起来。

直接树形DP。

凸性出题人告诉了。

凸性优化DP

例题

sequence

令 \(a_i:=a_i-i\),\(b_i:=b_i-i\)

\(dp_{i,j}\) 考虑到\(i\), \(b_i=j\)

\[dp_{i,j}=\min \left\{ dp_{i-1,k} \right\} + |j-a_i| \]

  1. \(dp_{i,*}\), 凸
  2. 维护函数拐点

习题

标签:二分,log,WQS,凸性,dp,DP,lambda
From: https://www.cnblogs.com/LightningCreeper/p/18240378

相关文章

  • 详解二分查找
    二分法详解大家好,我是Weekoder!这是我的第一篇文章,如果有做的不好的地方,请见谅,我会尽力改正。本文中的图片截取于网络视频,非恶意搬运。二分法,是一个高效的算法,查找一个数的时间复杂度只需要\(O(\logn)\),大大优化了朴素算法(从头到尾地遍历)\(O(n)\)的线性复杂度。稍后我会对它的......
  • 【QT5】<总览五> QT多线程、TCP/UDP
    文章目录前言一、QThread多线程二、QT中的TCP编程1.TCP简介2.服务端程序编写3.客户端程序编写4.服务端与客户端测试三、QT中的UDP编程1.UDP简介2.UDP单播与广播程序前言承接【QT5】<总览四>QT常见绘图、图表及动画。若存在版权问题,请联系作者删除!一、QThre......
  • 【NAS】Docker Gitea+SakuraFrp+绿联DPX4800标 搭建私有代码托管平台
    本文主要分享Gitea的一些设置,和Https的实现。Gitea的一些设置映射网络HTTPS的实现先准备好一个域名,建议准备一个1Panel创建一个AC账户然后点击申请证书,手动解析。申请完毕后,点击详情,查看证书crt和私钥key自己创建一个txt文本,将证书crt粘贴进去,然后将名字改为xxx.crt......
  • 【二分答案】P2390 地标访问
    \(\color{black}\text{P2390地标访问(传送门)}\)学过区间DP的,看到这题的第一反应都是:访问的地标一定是一个区间,并且在不断扩大,区间DP!可看到数据范围,又瞬间放弃了。与P1220关路灯不同,这题由于没有电量的消耗等额外因素,有这样一个小性质:贝西的行走路线只可能是三种:一路向......
  • AcWing算法基础课笔记——最小生成树与二分图
    目录朴素版prim算法——模板题AcWing858.Prim算法求最小生成树题目代码Kruskal算法——模板题AcWing859.Kruskal算法求最小生成树题目代码染色法判别二分图——模板题AcWing860.染色法判定二分图题目代码匈牙利算法——模板题AcWing861.二分图的......
  • UDP报文结构
    学习一个协议,首先就是去理解它的报文结构。UDP数据报可以分为报头与载荷两个部分。报头占八个字节,分别是源端口号,目的端口号,udp报文长度,UDP校验和,每个部分占两个字节。载荷是完整的应用层的数据报。报头和载荷可以认为是“拼接“在一起。UDP报文长度:是一个两个字节的16位的......
  • (nice!!!)LeetCode 312. 戳气球(区间dp ||记忆化dfs )
    312.戳气球思路:经典区间dp问题。方法一,区间dp。状态dp[i][j]表示:ij这个区间能获得的最大硬币数量。那么我们就可以枚举区间ij的每一个点,为该区间最后一个戳破的气球。细节看注释classSolution{public:intmaxCoins(vector<int>&nums){intn=nums.siz......
  • JAVAEE之网络编程(1)_套接字、UDP数据报套接字编程及从代码实例
    前言什么是网络编程呢? 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。当然,即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程一、网路编程中的基本概念1.1发送端和接收端发送端:数据的发送方进程,称为发送端。发......
  • HCCDP 备考第二天
    流程环境预置,登录ECS测试源数据库操作云数据库RDS,作为目标数据库操作DRS在线迁移任务,完成数据迁移2.1.创建云数据库RDS实例鼠标移动到云桌面浏览器页面中左侧菜单栏,点击服务列表->”数据库”->“云数据库RDS”进入进入实例管理界面,点击“购买数据库实例”进入参数填写界面,......
  • 快速使用 ThreadPoolExecutor 并行加速
    总览一般的Python脚本只会用上单线程。对于IO密集型任务,用多线程加速会快得多。本文会给出一个模板,使用ThreadPoolExecutor进行并行加速。注意,由于GIL的存在,对于CPU密集型任务ProcessPoolExecutor是更好的选择。快速使用ThreadPoolExecutor请看以下模板。fro......