求最大值:跑最短路,约束条件写作 dv−du<=wd_v-d_u<=wdv−du<=w,连边u−>v边权wu->v边权wu−>v边权w,松弛条件为一般最短路条件,若图中存在负环则无解。
求最小值,约束条件一般为dv−du>=wd_v-d_u>=wdv−du>=w,将不等式连边同乘-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<=0∀i,Xi<=0,然后增加一个0节点,令X0=0X_0=0X0=0。这样以来就多了n个形如Xi−X0<=0X_i-X_0<=0Xi−X0<=0的条件,应从0向每个节点连一条边权为0的边,从0开始跑最短路,即能跑出一组解。
- 前缀和思想建图,这种类型题目中往往会指出所有的位置或物品平铺在一条数轴上,然后给出若干个区间内限制信息,例如∀i,[li,ri]内物品数量<=wi\forall i,[l_i,r_i]内物品数量<=w_i∀i,[li,ri]内物品数量<=wi,如果用sum[]来表示前缀和,也即:sum[r]−sum[l−1]<=wsum[r]-sum[l-1]<=wsum[r]−sum[l−1]<=w,故只需在l−1与r之间连边即可l-1与r之间连边即可l−1与r之间连边即可,当然题目中有时还会有一些特殊限制条件,比如每个位置上只能放一个物品,那么:∀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]<=0∀i,sum[i]−sum[i−1]<=1,sum[i−1]−sum[i]<=0,当然还可能限制总物品数量,那么:sum[n]−sum[0]<=allsum[n]-sum[0]<=allsum[n]−sum[0]<=all。
- 待更