Codechef June15 ChefBook - 线性规划

本文介绍了一种通过将线性规划问题转化为最小费用流问题的方法来解决含有特定形式约束的最大化问题。该方法首先将原问题转换为一系列差分约束,并利用最小费用流算法求解这些约束下的最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  来自2016集训队作业。


  有2n个变量xi,yi,给定m个约束Lixaiybi+WiRi,最大化ixaiybi


  相当于是有2m个约束
  

xaiybiRiWi  ybixaiWiLi

  设inu,outu分别为出度、入度,则最优化条件相当于
  
maxuoutuxuinuyu

  这是个线性规划,考虑将其对偶,可以得到
  
(u,v)Exu,vyu,voutu,uV

  
(u,v)Eyu,vxu,vinv,vV

  
min(u,v)E(Ru,vWu,v)xu,v(Wu,vLu,v)yu.v

  将所有的约束加起来,得到00,所以所有的等号必须取到。
  考虑建图,则按照流量平衡,每个变量作为一条边,符号对应出/入流,费用为最优化式子中的系数,按符号往源或汇连容量为常数项的边,跑最小费用最大流得到的就是答案了。
  然后来看怎么出一组解。首先初始的约束是个差分约束系统,可以先判有无解;费用流跑出来的网络里某个变量代表的边有流量也即这个变量大于0,可知原问题对应的约束取到了等号,所以往差分约束里加上这个等式。这样跑出来的就是一组合法的解了。
  要注意答案非负,所以最后对所有变量都减去变量中的最小值。
  时间复杂度。。。O()。。。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值