线性规划 题解集

P6631 [ZJOI2020] 序列#

题解#

注意到原题是个整数规划,记所有操作的集合为 I,操作 i 的次数为 xi 化成标准型如下:

miniIxis.t. ijxi=aj(qj)xi0,xiZ

注意到我们有几乎充分的理由认定该线性规划的约束矩阵 A 是一个全单模矩阵,故我们去掉 xiZ 的限制,做对偶,有

maxi=1naiqis.t. SI,iSqi1

由全单模性,最有整数解存在,考虑操作 {i},有 ai1,易证 aimax(ai,1) 的替换是合法的,故 ai{1,0,1},动态规划即可,复杂度 O(n)

record#

qoj5036 [集训队互测2022] 卑鄙的下毒人#

题解#

记前缀和为 b0...n 即要求

mink(bnb0)+max(0,ai(bribli1))s.t. i[0,n),bi+1bi

注意到原题的目标函数和约束都为差分形式,考虑最大费用循环流的对偶:

mincapemax(0,costepu+pv)

建图:

  • goalk(bnb0)0cost=0cap=kn
  • goalmax(0,ai(bribli1))rcost=aicap=1l1
  • constrait:bi+1bii+1cost=0cap=+i

观察图易知答案等价于选择 k 个互不相交的集合,集合内的区间互不相交,最大化权值和。

可以直接贪心算法,又或者去掉 0cost=0cap=kn,跑最大费用最大流,第一次增广由于是 DAG,按照拓扑序计算最短路,这之后使用 dijkstra algorithm。复杂度 O(kmlogm)

record#

CF1307G Cow and Exercise#

题解#

很容易利用差分约束将最短路写成线性规划形式:

mindtdss.t. dvdu+wuvd0

则本题的线性规划形式为

p=mindtdss.t.  dvduxuvwuv(αuv)xuvx(β)d,x0

对偶为

d=maxxβ+wuvαuvs.t.  αiuαui0  (i{s,t})αisαsi1αitαti1αuv+β0α,β0

注意到可以构造 p 的一个最优解 d 满足 i,di0,由互补松弛定理有对任意 d 的最优解 (α,β),都有不等式一二三是紧的,则有

d=maxα,βxβ+wuvαuvs.t.  αiuαui=0  (i{s,t})αisαsi=1αitαti=1βαuvα,β0

考虑先枚举 β,记 γ=αβ,则有

f(β)=maxγβ(x+wuvγuv)s.t.  γiuγui=0  (i{s,t})γisγsi=1βγitγti=1β0γuv1

θ=1β,则有 wuvγuv 为流量刚好为 θ 时的最小费用流的费用大小,即要求

maxθg(θ)=x+[mincost of flow θ]θ

注意到 θ 是实数,但是如果取 θ=v+ϵ(ϵ[0,1]),则有在某个区间 [v0,v0+1] 中,记当前未走满的增广路费用为 f,已走满的增广路费用之和为 t,则有

dgdϵ=(x+t+ϵfv0+ϵ)=(c0+ϵfv0+ϵ)=v0fc0(v0+ϵ)2

符号与 ϵ 无关,在区间内单调,故最值总在整数处取到,预处理出流量为整数的费用,查询时取最好的即可。

record#

posted @   Watware  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示