$\newcommand{\edge}[1]{\mathop\rightarrow\limits^{#1}}$有一些求最大权值的问题可以先全部选择,再考虑用尽可能小的代价删除某些不合法的选择,转化为最小割
有一个来自的极妙的建图的方法:
考虑两个人$x,y$,假设$a_i$表示$i$选文科的贡献,$b_i$表示$i$选理科的贡献,$c_{i,j}$表示$i,j$都选文科的贡献,$d_{i,j}$表示$i,j$都选理科的贡献,我们这样建图
答案是输入中的所有贡献之和减去最小割
对于$S\edge{a_x}x\edge{b_x}T$这样的路径,有且仅有一条边会被割掉,对应着选另一科
再考虑两个人$x,y$,如果割掉$a_x,a_y$,那么剩下的图中最小割只能是$c_{x,y}$,恰好对应两人都选理的情况
如果割掉$b_x,b_y$,那么剩下的图中最小割只能是$d_{x,y}$,恰好对应两人都选文的情况
如果割掉$a_x,b_y$或$a_y,b_x$,那么$c_{x,y},d_{x,y}$都会被割掉,对应着两人分选两科的情况
不得不说建图是非常巧妙的,感觉自己没脑子来想这么牛逼的建图==
#include#include const int inf=2147483647;int min(int a,int b){return a