最近模拟赛考到了这样一个题:
就是给你一些有向边 (u,v),需要对每个 i 构造正整数 di ,使得 du<dv 的前提下 ∑dv−du 最小。n≤300,m≤1500 ,需要构造 d 的方案。
做法是:令 inu 是 u 的入度,outu 是 u 的出度。考虑写成 ∑dv−du+max(0,du+1−dv) ,连边 (u,v,1,∞) ,如果 inu≤outu 则连边 (S,u,0,outu−inu) ,否则连边 (u,T,0,inu−outu) ,跑最大费用流最大流。
但是构造方案就很迷惑,题解说的是,考虑每个 (u,v,1,∞) ,如果它是有流量的,就需要满足 dv−du=1 。再加上所有 du<dv 的限制跑差分约束即可。不是很懂这里的原理,有大佬能教教吗/kel