Description
在一个有m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。
编程任务:
对于给定的方格棋盘,按照取数要求编程找出总和最大的数。
Input
第1 行有2 个正整数m和n,分别表示棋盘的行数和列数。
接下来的m行,每行有n个正整数,表示棋盘方格中的数。
Output
程序运行结束时,将取数的最大总和输出
Sample Input
3 3 1 2 3 3 2 3 2 3 1
Sample Output
11
就是找一些点,使得互不相连,并且点权和最大。
结论是
先黑白染色一次。
S向所有黑点连一条为该权值的边,所有白点向T连一条为该权值的边。
黑点向周围四个白点连无限流量的边。
转化为了一张图,ans=所有点权和-最小割。
证明是
其实我认为有最大闭合权图思想,就是说,最小割=简单割,很显然吧。
将左边的边割去,表示这些黑点不选,右边的边割去,表示这些白点不选,
那么,最小割保证不连通,所以保证了这些点互不相连。
所以所以点权和-最小割=最优解。
时间: 2024-10-15 09:04:10