HDU 1565 1569 方格取数(最大点权独立集) 题目链接 题意:中文题 思路:最大点权独立集 = 总权值 - 最小割 = 总权值 - 最大流 那么原图周围不能连边,那么就能够分成黑白棋盘.源点连向黑点.白点连向汇点,容量都为点容量.然后黑白之间相邻的就连一条容量无限大的边 代码: #include <cstdio> #include <cstring> #include <queue> #include <algorithm> using names…
/** 转自:http://blog.csdn.net/u011498819/article/details/20772147 题目:hdu1569 方格取数(2) 链接:https://vjudge.net/problem/HDU-1569 题意:一个方格n*m,取出一些点,要求两两不相邻,求最大和. 思路:建图过程:对于二维矩阵,如果(i+j)%2==0,那么放在X集,s->(i-1)*m+j, cap = 元素值.否则放在Y集, (i-1)*m+j->t, cap = 元素值. 如果u与…
嗯,这是关于最大点权独立集与最小点权覆盖集的姿势,很简单对吧,然后开始看题. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1569 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description 给你一个m*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是…
题意:一个方格n*m,取出一些点,要求两两不相邻,求最大和.思路:建图,相邻的点有一条边,则建立了一个二分图,求最大点权独立集(所取点两两无公共边,权值和最大),问题转化为求总权和-最小点权覆盖集(点集I覆盖所有边,点权之和最小),(对应于原题,就是求拿掉最小点集,这些点覆盖所有边,拿掉后,每个点必然两两不相邻,否则:假设u,v相邻,则u->v这条边未被覆盖,矛盾),在建立超级源汇点s,t,s连向所有X中的点(设二分图G(X,Y)),Y联向t,,权值为点权,原来X->Y的所有边权值改为inf,…
描述 给你一个m*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的数的和最大. 输入 包括多个测试实例,每个测试实例包括2整数m,n和m行n列的非负数(m<=50,n<=50) 输出 对于每个测试实例,输出可能取得的最大的和 样例输入 3 375 15 21 75 15 28 34 70 5 样例输出 188 题意 如上 题解 最大点权独立集=总权值-最小点权覆盖 用最小割跑出来的是最小点权覆盖,…
http://acm.hdu.edu.cn/showproblem.php?pid=1565 两道题只是数据范围不同,都是求的最大点权独立集. 我们可以把下标之和为奇数的分成一个集合,把下标之和为偶数的分成一个集合,然后构造一个源点向其中一个集合连边,另一个集合向汇点连边.权值都为P[i][j]. 然后由源点指向的集合向指向汇点的集合连边权值为INF.这样跑一遍就是最小点权覆盖. 那么最大点权独立集=总权-最小点权覆盖=总权-最大流. #include <iostream> #include…
本来想写道水题....结果调了这么久!就是一个 define 里面少加了个括号 ! 二分图最大点权独立集...黑白染色一下 , 然后建图 : S -> black_node , white_node -> T , 流量都为点权 . 然后 black_node -> white_node ( 两点有公共边 ) , 流量为 +oo , 然后 answer = ∑ w( i ) ( i ∈ V ) - maxflow --------------------------------------…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1475 [题目大意] 给出一个n*n的方格,从中取一些不相邻的数字,使得和最大 [题解] 我们可以根据i+j的奇偶性将点划分为两组,同组之间无连边,因此这是一张二分图 我们建立源点对偶点引点权大小的流量,建立汇点,从每个奇点引点权大小的流量到汇点, 总点权减去该图的最小割就是答案,因为最小割中的边表示了该点被选中去除, 所有去除点和最小,那么剩下的满足限制条件的就一定是最大值了. [代…
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1475 [算法] 首先将方格黑白染色 , 也就是说 , 如果(i + j)为奇数 , 这个点就是黑点 , 否则是白点 那么这个n * n的方格就被分为了两个集合 , 一个是黑点集合 , 一个是白点集合 如果选取一个黑点 , 造成影响的是四方向内的白点 如果选取一个白点 , 造成影响的是四方向内的黑点 考虑首先选取所有的点 , 然后去掉最小代价的点 , 并使方案合法 那么这就是一个最小…
题目大概说有几个黑色.白色矩阵,问能选出黑白不相交的矩形面积和的最大值. 建二分图,黑色矩阵为X部的点,白色为Y部,XY的点权都为其矩阵面积,如果有个黑白矩阵相交则它们之间有一条边,那样问题就是要从这个二分图中选出最大的点使其没有公共边且点权和最大. 即二分图的最大点权独立集.可以建容量网络用最小割求解,在二分图基础上加源点汇点,源点向X部连容量为权值的边,Y部向汇点连容量为权值的边,X部与Y部的无向边改为容量INF的有向边,最后的结果就是所有点权和-最小割. #include<cstdio>…