- P2774 方格取数问题
- P3355 骑士共存问题
- 两道题大体上的建图方式一致,通过横纵坐标和的奇偶性将网格上的点分成两部分,一部分连源点,一部分连汇点;为什么要考虑转化成二分图? 因为两道题的共性在于相互之间可能存在限制的两点的横纵坐标和奇偶性不同,这样对限制关系所连边的两点分别位于二分图的两边,网络流中的“流”又常常可以用来表达限制条件;
- 考虑方格取数问题:从删的角度看,希望从原网格中删掉一些方格使得剩余方格不再存在互斥关系且权值和最大。具体建图方式如下:源点连向坐标和为奇数的点,容量为方格权值,坐标和为偶数的点连向汇点,容量为方格权值,对于每个限制关系,和为奇数的点向和为偶数的点连容量为Inf的边,现在我们已经把互斥关系全部表示在了图中;然后我们试图“砍断”一些边,使得源点到汇点的流量为0——割;源点到汇点没有可行流等价于没有任何一组互斥关系得到满足(可反证);显然我们要让求得割最小,这样原网格中剩余点的权值才会最大——最大流最小割定理,答案即为原网格中的权值和-最大流。
- 考虑骑士共存问题:不同位置骑士互斥可以用上面的方法建图,但是多了一个障碍的限制,因此在建图的时候只对除去涉及障碍点以外的互斥关系建图,最够再在答案中将障碍点的数目减掉即可,或者直接将源点连障碍点,障碍点连汇点跑最大流也行。
- 骑士共存问题代码
- 方格取数问题代码
从割的角度求解问题
最新推荐文章于 2023-06-06 14:07:49 发布