预备知识:

点覆盖集:无向图G的一个点集,使得该图中所有边都至少有一个端点在该集合内。
最小点权覆盖集:在带点权无向图G中,点权之和最小的覆盖集。
点独立集:无向图G的一个点集,使得任两个在该集合中的点在原图中都不相邻。
最大点权独立集:在带权无向图G中,点权之和最大的独立集。

// 定理:
 // 1. 最小点权覆盖集=最小割=最大流
 // 2. 最大点权独立集=总权-最小点权覆盖集
 // 解题:
 // 1. 先染色,取一个点染白色,和它相邻的点染黑色
 // 2. 每个白点向它相邻的黑点连一条边,容量为 inf (无穷大)
 // 3. 增加源点S,向每一个白色点连一条边,容量为白点的权
 // 4. 增加汇点T,每个黑点向T连一条边,容量为黑点的权
 // 5. 求MaxWVIS = TotalFlow - MaxFlow

以下摘自网络流24题解析

【建模分析】
这是一个二分图最大点权独立集问题,就是找出图中一些点,使得这些点之间没有边相连,这些点的权值之和最大。
独立集与覆盖集是互补的,求最大点权独立集可以转化为求最小点权覆盖集(最小点权支配集)。
最小点权覆盖集问题可以转化为最小割问题解决。
结论:最大点权独立集 = 所有点权 - 最小点权覆盖集 = 所有点权 - 最小割集 = 所有点权 - 网络最大流。
对于一个网络,除去冗余点(不存在一条ST路径经过的点),每个顶点都在一个从S到T的路径上。
割的性质就是不存在从S到T的路径,简单割可以认为割边关联的非ST节点为割点,而在二分图网络流模型中每个点必关联到一个割点(否则一定还有增广路,当前割不成立),
所以一个割集对应了一个覆盖集(支配集)。最小点权覆盖集就是最小简单割,求最小简单割的建模方法就是把XY集合之间的变容量设为无穷大,此时的最小割就是最小简单割了。
有关二分图最大点权独立集问题,更多讨论见《最小割模型在信息学竞赛中的应用》作者胡伯涛。

我的理解

大致意思,要求一个带点权的无向图的最大点权独立集,就是要求一些点,使得这些点之间没有边相连,这些点的权值之和最大。

先按无向图中的邻边关系建成二分图,然后增加源点S、汇点T并连边建成网络,边容量如上述。至此构图完成。

然后求最大流,求出的最小割割边集的对应割点集(非S、T即可),就是最小点权覆盖集

用所有点权减去它,就是最大点权独立集

大致代码:

//   m*n的矩形
//  (i, j)    (i+j)%2int m, n;
int tot;
void read()     //  i*n+j、m*n、m*n+1
{tot = 0;scanf("%d%d", &m, &n);init(m*n+2);for(int i=0; i<m; i++)for(int j=0; j<n; j++){int t;  scanf("%d", &t);tot += t;if((i+j)%2) {addEdge(m*n, i*n+j, t);//(i, j)->(i, j+1)   //(i, j)->(i+1, j)if(j+1<n) addEdge(i*n+j, i*n+j+1, INF);if(i+1<m) addEdge(i*n+j, (i+1)*n+j, INF);if(j-1>=0) addEdge(i*n+j, i*n+j-1, INF);if(i-1>=0) addEdge(i*n+j, (i-1)*n+j, INF);}else {addEdge(i*n+j, m*n+1, t);/*                                          //在X的点会加这些边,不用重复。。if(j+1<n) addEdge(i*n+j+1, i*n+j, INF);if(i+1<m) addEdge((i+1)*n+j, i*n+j, INF);if(j-1>=0) addEdge(i*n+j-1, i*n+j, INF);if(i-1>=0) addEdge((i-1)*n+j, i*n+j, INF);*/}}
}
void solve()
{int f = maxFlow(m*n+2, m*n, m*n+1);printf("%d\n", tot-f);
}
int main()
{read();solve();
}

[网络流][最大点权独立集] 方格取数相关推荐

  1. 线性规划与网络流24题●09方格取数问题13星际转移问题

    ●(做codevs1908时,发现测试数据也涵盖了1907,想要一并做了,但因为"技术"不佳,搞了一上午) ●09方格取数问题(codevs1907  方格取数3) 想了半天,也没 ...

  2. [网络流24题][BZOJ1475]方格取数(最小割)

    题目描述 传送门 题解 讲棋盘进行黑白染色,从超级源向所有黑点连边,容量为num:从所有白点向超级汇连边,容量为num:再从所有的黑点向与之相邻的白点连边,容量为INF. 求最小割(最大流)即为答案. ...

  3. 734. [网络流24题] 方格取数问题 二分图点权最大独立集/最小割/最大流

    «问题描述: 在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任 意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. «编程任务: 对于给定 ...

  4. hdu 3657 最大点权独立集变形(方格取数的变形最小割,对于最小割建图很好的题)...

    转载:http://blog.csdn.net/cold__v__moon/article/details/7924269 /* 这道题和方格取数2相似,是在方格取数2的基础上的变形.方格取数2解法: ...

  5. hdu 1569 方格取数(2) 最大点权独立集

    二分图. 最大点权独立集=总权-最小点权覆盖集. 哪位大神能给一些二分图 最大点权独立集等等 的相关资料!!!!!跪谢 用网络流求解最小点权覆盖集即可,建图不讲了. #include<cstdi ...

  6. [luoguP2774] 方格取数问题(最大点权独立集)

    传送门 引入两个概念: 最小点权覆盖集:满足每一条边的两个端点至少选一个的最小权点集. 最大点权独立集:满足每一条边的两个端点最多选一个的最大权点集. 现在对网格染色,使得相邻两点颜色不同,之后把两个 ...

  7. 【网络流24题】I、 方格取数问题(二分图的最大独立集/最小割)

    I. 方格取数问题(二分图的最大独立集/最小割) [问题分析] 二分图点权最大独立集,转化为最小割模型,从而用最大流解决. [建模方法] 首先把棋盘黑白染色,使相邻格子颜色不同,所有黑色格子看做二分图 ...

  8. BZOJ 1324: Exca王者之剑/BZOJ 1475: 方格取数 最大权独立集 最小割

    1324: Exca王者之剑 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 618  Solved: 310 [Submit][Status][Di ...

  9. 最小割 ---- 二分图最大独立集(集合冲突模型) ---- 骑士共存 方格取数(网络流24题)

    二分图独立集 定理: 二分图最大独立集=n - 二分图最大匹配 其实二分图独立集是特殊的一种最大权闭合子图.我们根据上文"收益"的思想,把选某个点的收益看为1,左部节点为正权点,右 ...

最新文章

  1. 结构体重定义冲突_有意减脂、调整饮食,体重却增加了?
  2. 1.2 private 关键字 面向对象封装
  3. .net core MongoDB 初试
  4. rtp发送h264和h265
  5. 18 张图彻底弄懂 HTTPS 的原理!
  6. 【学校集训】【USACO15DecG】Bessie's Dream
  7. 2020年华工计算机应用基础随堂作业,《计算机应用基础》随堂练习-2020年华工网络教育.docx...
  8. nrf51822微信开发入门学习笔记1:开始前的准备
  9. ASDM的网管的环境搭建
  10. 数据同步工具kettle
  11. 排序算法之冒泡排序(图解)
  12. 国际期刊出版趋势及科技论文写作要点
  13. 词汇处理——词义辨析消歧(一)
  14. 论文中的参考文献怎么写?
  15. JVM上篇:内存与垃圾回收篇一--JVM与Java体系结构
  16. typeof和instanceof的区别
  17. 作业二:wireshark抓包与ping操作
  18. Adobe Audition 2022 v22.2 U2B macOS 专业的音频工作站
  19. 七款HTML在线编辑器[下载]
  20. 如何使用Excel管理项目?

热门文章

  1. 芯动A11算力2000M以太坊矿机机皇
  2. E25-在线扩盘需要注意的点
  3. mysql修改元宝,端游[君·天下]高仿魔兽世界一键启动服务端+配套客户端+元宝金币修改教程等...
  4. 富友支付AS微信支付
  5. Win8下如何安装Win7 or Win7下如何安装win8?
  6. arduino五天小结
  7. 杰克韦尔奇《赢》读书笔记
  8. 做自适应网站时需要参考的设备分辨率有哪些
  9. Wine Reviews(葡萄酒评论相关数据集)
  10. 所谓的日常 #8 - 王司徒巧使連環計 董太師大鬧鳳儀亭