洛谷 - P1361 P4313 P1646
先说几句:

- yzc太唐了

老实了
1.思路
这道题用小脑子想一想,可知是最小割
我们先假设能满足所有组合
然后再把它割掉
评论区给出了三倍经验,P4313和P1646。
具体思路如下:
我们把每一个人视作一个点 \(i\),规定:\(i\)被割到\(S\)集里,代表这个人选文,\(i\)被割到\(T\)集里,代表这个人选理.
将\(S\)连向这个点,长度为\(art\),如果该边被割,则说明不选文,不能获得\(art\)的收益,可得到\(science\)的收益。
将这个点连向\(T\),长度为\(science\),如果该边被割,则说明不选理,不能获得\(science\)的收益,可得到\(art\)的收益。
那么对于同时选择的情况,我们可以新建点。
对于几个相邻的点,我们新建一个点,将S连向这个点,长度为同时选文可获得的收益,如果该边被割,则说明这些人不同时选文,不能获得同时选文可获得的收益。
同样,我们新建一个点,将这个点连向\(T\),长度为同时选理可获得的收益,如果该边被割,则说明这些人不同时选理,不能获得同时选理可获得的收益,
怎么保证不割这条边则必然都选同样的科目呢?
我们可以将新建的点,向相邻的那几个点中的每一个点(或从相邻的那几个点中的每一个点向新建的点)连一条长度为\(inf\)的边,这样的边在最小割中肯定不会存在,则保证了在代表共同选择收益的边不被割时(即都选一个科目)新建的点与相邻的点在同一个点集。问题得以解决。
通过\(Dinic\)算法求得该图的最小割,总收益减最小割即为最大收益。

浙公网安备 33010602011771号