
CF1307G Cow and Exercise 【线性规划转对偶+费用流】
发布日期:2021-05-06 15:54:50
浏览次数:17
分类:技术文章
本文共 2233 字,大约阅读时间需要 7 分钟。
记 S S S 为源点, T T T 为汇点,流量为 F F F ,费用为 c o s t cost cost , f u v f_{uv} fuv 表示 u u u 到 v v v 的实际流量, c u v c_{uv} cuv 表示 u u u 到 v v v 的流量限制, w u v w_{uv} wuv 表示 u u u 到 v v v 的边权。
那么最小费用的线性规划形式则为
m i n { ∑ f u v w u v } { f u v ≤ c u v / / 流 量 限 制 ∑ v f v u − ∑ v f u v = 0 ( u ≠ S , T ) / / 流 量 平 衡 ∑ v f v S − ∑ v f S v = − F ∑ v f v T − ∑ v f T v = F f u v ≥ 0 min\{\sum f_{uv}w_{uv} \} \\ \begin{cases} f_{uv}\le c_{uv} &//流量限制 \\ \sum_v f_{vu}-\sum_v f_{uv}=0\ \ (u\ne S,T)\ \ &//流量平衡 \\ \sum_v f_{vS}-\sum_v f_{Sv}=-F \\ \sum_v f_{vT}-\sum_v f_{Tv}=F \\ f_{uv}\ge 0 \end{cases} min{ ∑fuvwuv}⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧fuv≤cuv∑vfvu−∑vfuv=0 (u=S,T) ∑vfvS−∑vfSv=−F∑vfvT−∑vfTv=Ffuv≥0//流量限制//流量平衡 转对偶问题,得到一个有 n 2 + n n^2+n n2+n 个变量的线性规划。记前 n 2 n^2 n2 个喂 x u v x_{uv} xuv ,后 n n n 个为 d i s i dis_i disi 。则对偶问题为: m a x { F ⋅ ( d i s T − d i s S ) + ∑ x u v c u v } { x u v + d i s v − d i s u ≤ w u v x u v ≤ 0 , d i s i 无 限 制 max\{ F\cdot(dis_T-dis_S)+\sum x_{uv}c_{uv} \} \\ \begin{cases} x_{uv}+dis_v-dis_u\le w_{uv} \\ x_{uv}\le 0,dis_i无限制 \end{cases} max{ F⋅(disT−disS)+∑xuvcuv}{ xuv+disv−disu≤wuvxuv≤0,disi无限制 将 x u v x_{uv} xuv 取相反数可得: m a x { F ⋅ ( d i s T − d i s S ) − ∑ x u v c u v } { d i s v ≤ d i s u + w u v + x u v x u v ≥ 0 , d i s i 无 限 制 max\{ F\cdot(dis_T-dis_S)-\sum x_{uv}c_{uv} \} \\ \begin{cases} dis_v\le dis_u+w_{uv}+x_{uv} \\ x_{uv}\ge 0,dis_i无限制 \end{cases} max{ F⋅(disT−disS)−∑xuvcuv}{ disv≤disu+wuv+xuvxuv≥0,disi无限制 观察约束条件可以发现,当 d i s i dis_i disi 表示最短路, x u v x_{uv} xuv 表示一条边增加的边权时,约束条件成立。那么 ∑ x u v c u v \sum x_{uv}c_{uv} ∑xuvcuv 就表示 X X X (增加的边权和)。发现 X X X 就是题目的 x x x ,这就是题目的线性规划形式。(如果不严谨请轻喷233联系原线性规划形式我们可以得到:( c o s t cost cost 为费用)
F ⋅ ( d i s T − d i s S ) − X ≤ ∑ f u v w u v F ⋅ ( d i s T − d i s S ) − X ≤ c o s t d i s T − d i s S ≤ c o s t + X F \begin{aligned} F\cdot(dis_T-dis_S)-X&\le\sum f_{uv}w_{uv} \\ F\cdot(dis_T-dis_S)-X&\le cost \\ dis_T-dis_S&\le \frac{cost+X}{F} \\ \end{aligned} F⋅(disT−disS)−XF⋅(disT−disS)−XdisT−disS≤∑fuvwuv≤cost≤Fcost+X 所以我们现在要做的就是求最小的 c o s t + X F \frac{cost+X}{F} Fcost+X 。固定总流量是 F F F ,跑费用流求最小的 c o s t cost cost 。显然 ( F , c o s t ) (F,cost) (F,cost) 是凸的,那么最小的 c o s t + X F \frac{cost+X}{F} Fcost+X 就可以三分来求。 O ( n 2 m + q log n ) O(n^2m+q\log n) O(n2m+qlogn) 。发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年03月24日 16时30分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
tf.Session().as_default的作用
2019-03-03
isnull与isna的区别
2019-03-03
python自带超参调优包
2019-03-03
形象解释Momentum
2019-03-03
auc指标的理解
2019-03-03
判断python模型是否安装的办法
2019-03-03
xgboost模型参数详解
2019-03-03
xgboost与gbdt的区别
2019-03-03
软件测试中使用coverage统计python代码的覆盖率
2019-03-03
从double到float的强制类型转换
2019-03-03
C++ 任意数据类型转为16进制输出
2019-03-03
PYTHON UDP只能接收本地报文,无法接收其他主机通过路由器发过来的报文
2019-03-03
QLabel控件功能示例
2019-03-03
Python对象和引用计数 object.h文档
2019-03-03
springcloud学习:rpc和http的区别,各自的优缺点
2019-03-03
java进程、线程知识扩充
2019-03-03
vue项目中报/sockjs-node/info错误
2019-03-03
【公众】localhost:8080找不到tomcat猫界面,并且报404错误原因
2019-03-03
如何处理前任程序员留下的代码
2019-03-03
来自投资银行的20个Java面试题
2019-03-03