差分约束系统

本文探讨了在特定约束条件下使用最短路算法求解最大值和最小值问题的方法,介绍了如何通过调整不等式和连边权重转换问题形式,以及利用前缀和思想解决数轴上的区间限制问题。

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

求最大值:跑最短路,约束条件写作 dv−du<=wd_v-d_u<=wdvdu<=w,连边u−>v边权wu->v边权wu>vw,松弛条件为一般最短路条件,若图中存在负环则无解。
求最小值,约束条件一般为dv−du>=wd_v-d_u>=wdvdu>=w,将不等式连边同乘-1,写作小于等于形式,跑最短路,最后结果为答案取相反数。

建图技巧:

  1. 如果{a1,a2,...ana_1,a_2,...a_na1,a2,...an}是一组解,那么对于任意的常数bbb,{a1+b,a2+b,...an+ba_1+b,a_2+b,...a_n+ba1+b,a2+b,...an+b}显然也是一组解,故可以先求一组负数解,即假设∀i,Xi<=0\forall i,X_i<=0i,Xi<=0,然后增加一个0节点,令X0=0X_0=0X0=0。这样以来就多了n个形如Xi−X0<=0X_i-X_0<=0XiX0<=0的条件,应从0向每个节点连一条边权为0的边,从0开始跑最短路,即能跑出一组解。
  2. 前缀和思想建图,这种类型题目中往往会指出所有的位置或物品平铺在一条数轴上,然后给出若干个区间内限制信息,例如∀i,[li,ri]内物品数量<=wi\forall i,[l_i,r_i]内物品数量<=w_ii,[li,ri]<=wi,如果用sum[]来表示前缀和,也即:sum[r]−sum[l−1]<=wsum[r]-sum[l-1]<=wsum[r]sum[l1]<=w,故只需在l−1与r之间连边即可l-1与r之间连边即可l1r,当然题目中有时还会有一些特殊限制条件,比如每个位置上只能放一个物品,那么:∀i,sum[i]−sum[i−1]<=1,sum[i−1]−sum[i]<=0\forall i,sum[i]-sum[i-1]<=1,sum[i-1]-sum[i]<=0i,sum[i]sum[i1]<=1,sum[i1]sum[i]<=0,当然还可能限制总物品数量,那么:sum[n]−sum[0]<=allsum[n]-sum[0]<=allsum[n]sum[0]<=all
  3. 待更
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值