将网格分为两部分,方法是黑白染色,即判断(i+j)&1即可,分开后从白色格子向黑色格子连边,每个点需要四条(边界点可能更少),也就是每个格子周围的四个方向.之后将源点和汇点分别于黑白格子连边,边权即为点权,最后用总权值减去最小割即可. #include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #inclu…
题目大意:在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,输出这些数之和的最大值. 思路:这种各个点之间互相排斥求最大值的题,往往需要利用上网络流最小割的性质.我们把方格中的所有数字都选上,看看把哪些格子抠掉,能使数值和的减少量最少. 每个格子看作一个节点,其向四周的格子代表的节点连边.现要求一个节点的集合,使得这些点与所有边相连,求点权之和最小值.这就是最小权点覆盖集问题. 要想使该问题有解,往往要将图中的节点分为两个集合,一个集…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1475 [题目大意] 给出一个n*n的方格,从中取一些不相邻的数字,使得和最大 [题解] 我们可以根据i+j的奇偶性将点划分为两组,同组之间无连边,因此这是一张二分图 我们建立源点对偶点引点权大小的流量,建立汇点,从每个奇点引点权大小的流量到汇点, 总点权减去该图的最小割就是答案,因为最小割中的边表示了该点被选中去除, 所有去除点和最小,那么剩下的满足限制条件的就一定是最大值了. [代…
#6007. 「网络流 24 题」方格取数 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 在一个有 m×n m \times nm×n 个方格的棋盘中,每个方格中有一个正整数. 现要从方格中取数,使任意 2 22 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. 输入格式 文件第 1 11 行有 2 22 个正整数 m mm 和 n nn,分别表示棋盘的行数和…
  HDU 1565 方格取数(1) 给你一个n*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大. Input 包括多个测试实例,每个测试实例包括一个整数n 和n*n个非负数(n<=20) Output 对于每个测试实例,输出可能取得的最大的和 Sample Input 3 75 15 21 75 15 28 34 70 5 Sample Output 188直接用这个程序拿双倍经验吧~…
题目链接:https://vjudge.net/problem/HDU-1569 方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6876    Accepted Submission(s): 2198 Problem Description 给你一个m*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任…
https://www.luogu.org/problemnew/show/P2774 把两个相邻的节点连边,这些边就是要方便最小割割断其他边存在的,容量无穷. 这种类似的问题的话,把二分图的一部分(黑点)连S,容量为其价值,另一部分(白点)连T,容量也是其价值. 因为上面的边存在我们在最小割的时候需要割断一些边表示这个点不被取到. 但是这个和最大权闭合子图有什么不同呢,为什么白色点好像和最大权闭合子图中的负权点得到了类似的待遇? 是不是可以这样转化,先假设获得了所有黑点白点的权值,因为某些黑点…
题目链接 不知道为啥坠大点权独立集的做法跟最大权闭合图差不多? qwq 放个链接 #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #include<cstdlib> #include<queue> #define maxn 30000 using namespace std; inline long long read(){ ,f=; ch…
传送门 引入两个概念: 最小点权覆盖集:满足每一条边的两个端点至少选一个的最小权点集. 最大点权独立集:满足每一条边的两个端点最多选一个的最大权点集. 现在对网格染色,使得相邻两点颜色不同,之后把两个颜色的点分成两个集合X,Y.S向X集合每个点连一条该点权值的边,Y集合每个点向T连一条该点权值的边,原来的边流量全部变为INF.这个网络的最小割为最小点权覆盖集.因为这个最小割满足了,对于中间每一条边,两端的点必定选择了一个.若一个都没有选择则S与T仍连通.且因为中间的边流量为INF所以不会是中间被…
http://acm.hdu.edu.cn/showproblem.php?pid=1565 题意:中文. 思路:一个棋盘,要使得相邻的点不能同时选,问最大和是多少,这个问题就是最大点权独立集. 可以转化为所有的点权 - 最小点权覆盖集(最小割) = 最大点权独立集. 转载两个的定义:这里. 覆盖集(vertex covering set,VCS)是无向图的一个点集,使得该图中所有边都至少有一个端点在该集合内.形式化的定义是点覆盖集为G'VV∈(,)uvE∀∈,满足对于,都有 或成立,即,'uV…