菜鸡的模板很丑,就不贴了。算法
这玩意你不搞好就别作网络流了,固然你是神仙当我没说。网络
把流量当作需求量/偏移量,而后用源汇调整,用来判断可行性。函数
最小割定理:最小割=最大流。优化
最小割断定定理:先跑一遍最小割。spa
一条边可能在最小割:流满,两端点在不一样\(SCC\)。模板
一条边必定在最小割:流满,起点和源点在同一个\(SCC\),终点和汇点在同一个\(SCC\)。class
通常用来当代价用,我如今碰到的模型最小割不知道比最大流多到哪里去了。基础
先加上贡献,而后减掉代价。变量
就是那点东西,\(zsy\)教了我一个能够跑特殊意义下费用流的带负环的算法,然而我不打算写。。。思考
有源汇=\(T->S\)连\(inf\)边,就无源汇了。
先跑可行流。可行流就是先把每条边的下界跑满,而后新建超级源汇补流吸流。
思考这一类问题(包括一些并非上下界可是须要调整的模型)能够经过水来形象的思考。
最大流就是在这个基础上跑加上\(S->T\),最小流就是减掉\(T->S\),这里的\(S,T\)都是指原来的源汇。
知足每一个变量是非负整数。
先用\(y_i,z_i\)等把全部不等式化成等式,而后用差分的奇技淫巧使得每一个变量只出现过两次,一次正一次负。
这个必定要本身好好推一推,大概是源点像常数项为负的连边,常数项为正向汇点连边,负向正连边。
最好一开始默认全部变量是零,而后你经过改变一个变量的值来平衡流量。
咱们常常会碰到好比说一个点像区间连边的题,但这样边数会很大,又\(TLE\)又\(MLE\)。
因此线段树优化连边,主席树优化连边,线段树合并优化连边(好像都是线段树?)
注意一些线段树的东西在维护的时候想好怎么连边,好比线段树合并的\(merge\)函数。
\(n\)很小区间个数不少能够二维\(RMQ\)优化。
这是个神仙玩意,我尚未填完坑呢。