差分约束系统

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

建图技巧:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值