[BZOJ 1497][NOI 2006]最大获利(最大权闭合子图)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1497
分析:
这是在有向图中的问题,且边依赖于点,有向图中存在点、边之间的依赖关系可以考虑最大权闭合子图
假设a与b之间有权值为c的边(根据题意是双向边)
那么我们可以建一个新节点,点的权值为c,并指向a点和b点(单向),同时断掉原本a,b之间的双向边,a,b的点的权值是它们的花费(负的)
那么对于原问题就转化成了求最大权闭合子图的问题了
————————————————————————————————————————————————————————————————
最大权闭合子图
定义:有向图中选出一个点集V',必须满足对于V‘中的每个点,它的后继也在V’中,选出所有点权值和最大的点集V‘
算法:
弄一个源点S,汇点T,S连向所有权值为正的点,容量为点的权值,所有权值为负的点连向T,容量为点的权值的绝对值。
最后ans=图G中所有权值为正的节点的和-最小割
证明:http://wenku.baidu.com/link?url=Q7LKOvCRFeMQkY1WulrZTAHjN3ud8gbhuqUOKwPbwmGDAmCB0_URdEkJ59WKWVRGn9xSg9TgbWSmhhBIMxvGS2wMbENrxre6ZuSeO2v3mX7
然后这里我也来说一说:
1、首先因为原图中的边全是+inf,所以割边一定是S连出的边或者连向T的边
2、假设最小割割完后,S所在集合为A,T所在集合为B,那么A和B一定是闭合子图(S,T点除外)
因为如果假设A不是闭合子图,那么就说明A中的某一个节点的后继在B中,也就说明最小割把这条边给割掉了,但是原图中的边全是inf,所以不可能被割掉,所以假设不成立,所以A一定是闭合子图,B也一定是闭合子图(同理)
3、接下来我们只要说明对于最小割情况下的A集合,一定是最大的闭合权子图
对于随便任意一个割C(当然还是不会割掉容量inf的边)
则C为B中所有权值为正的点权和(即S连出的边被割掉的总量)+B中所有权值为负的点权绝对值和(即连向T的边被割掉的总量)(C=x1+y1)
设A集合对应的闭合图的权值和W,则W=A中权值为正的节点的权值和-A中权值为负的节点的权值绝对值和(W=x2-y2)
相加得W+C=x1+x2+y1-y2
y1和y2显然相等
所以W+C=x1+x2=原图中所有权值为正的点权和(这是个常数!)
所以C越小,W就越大,于是就相当于求最小割了
——————————————————————————————————————————————————————————————————
其实这一题有更优的算法,详见2007年集训队论文
[BZOJ 1497][NOI 2006]最大获利(最大权闭合子图)的更多相关文章
- P4174 [NOI2006]最大获利 (最大权闭合子图)
		
P4174 [NOI2006]最大获利 (最大权闭合子图) 题目链接 题意 建\(i\)站台需要\(p_i\)的花费,当\(A_i,B_i\)都建立时获得\(C_i\)的利润,求最大的利润 思路 最大 ...
 - 【BZOJ】1497: [NOI2006]最大获利 最大权闭合子图或最小割
		
[题意]给定n个点,点权为pi.m条边,边权为ci.选择一个点集的收益是在[点集中的边权和]-[点集点权和],求最大获利.n<=5000,m<=50000,0<=ci,pi<= ...
 - BZOJ1497[NOI2006]最大获利——最大权闭合子图
		
题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成 ...
 - bzoj1497 [NOI2006]最大获利 最大权闭合子图
		
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路 最大权闭合子图的裸题 一开始知道是这个最大权闭合子图(虽然我不知道名字),但是我 ...
 - BZOJ 4873 [Shoi2017]寿司餐厅 | 网络流 最大权闭合子图
		
链接 BZOJ 4873 题解 当年的省选题--还记得蒟蒻的我Day1 20分滚粗-- 这道题是个最大权闭合子图的套路题.严重怀疑出题人就是先画好了图然后照着图编了个3000字的题面.和我喜欢的妹子当 ...
 - BZOJ 1565 / P2805 [NOI2009]植物大战僵尸 (最大权闭合子图 最小割)
		
题意 自己看吧 BZOJ传送门 分析 - 这道题其实就是一些点,存在一些二元限制条件,即如果要选uuu则必须选vvv.求得到的权值最大是多少. 建一个图,如果选uuu必须选vvv,则uuu向vvv连边 ...
 - bzoj1497 最大获利(最大权闭合子图)
		
题目链接 思路 对于每个中转站向\(T\)连一条权值为建这个中转站代价的边.割掉这条边表示会建这个中转站. 对于每个人向他的两个中转站连一条权值为\(INF\)的边.然后从\(S\)向这个人连一条权值 ...
 - BZOJ 1565 植物大战僵尸(拓扑排序+最大权闭合子图)
		
图中的保护关系就类似于最大权闭合子图.即你想杀x,你就一定要杀掉保护x的点,那么把x向保护它的点连边.那么题目就转化成了最大权闭合子图的问题. 但是这个图有点特殊啊... 考虑有环的情况,显然这个环以 ...
 - bzoj 4873: [Shoi2017]寿司餐厅【最大权闭合子图】
		
有正负收益,考虑最小割 因为有依赖关系,所以考虑最大权闭合子图 首先对每个d[i][j]建个点,正权连(s,id[i][j],d[i][j])并加到ans上,负权连(id[i][j],t,-d[i][ ...
 
随机推荐
- DGbroker三种保护模式的切换
			
1.三种保护模式 – Maximum protection 在Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data loss.事务同时在主从两边提交完成,才 ...
 - iOS同一项目多个Target的快速实现方法
			
之前写过这种场景下的项目,比如类似滴滴的司机端和乘客端,学生端和教师端等等.. 最近有人问我,就整理记录如下: 1.正常新建一个项目,完成后 如下: 2.这一步就是添加一个新的target 3.添加 ...
 - Python 变量类型
			
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...
 - log4j 日志信息的引入(通用版)——解决项目运行过程中的日志信息
			
定义 log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程 ...
 - FineReport层式报表解决大数据集展示问题攻略
			
本文以填报报表为例,通过分页的方式,来解决大数据集展示的问题. 实现的思想就是通过在SQL里筛选部分数据库数据,以达到浏览器可以合理的展示报表页面.(数据分段,语句我这采用的是MYSQL,如果要用其他 ...
 - 使用jquery合并表格中相同文本的相邻单元格
			
一.效果 二.代码 <!DOCTYPE HTML> <html> <head> <title>Example</title> <met ...
 - [转]asp.net c# 网上搜集面试题目(附答案)
			
本文转自:http://www.cnblogs.com/hndy/articles/2234188.html 1.String str=new String("a")和String ...
 - POJ3463Sightseeing[次短路计数]
			
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8707 Accepted: 3056 Descr ...
 - [No000056]你无法真正占有一个人,包括你的爱人,先生或太太、小孩,以及你自己....
			
从一出生,我们的双手就握的紧紧的,好像深知自己会失去什么 很多人迷信多子多孙才是福,老来才有依靠,但太多新闻告诉我们,很多人老了,子孙为了分家产,反而让他生不如死,死了还无法入土为安. 现实也告诉我们 ...
 - java 22 - 9 多线程之 代码实现的方式2
			
多线程的代码实现: 方式2:实现Runnable接口 步骤: A:自定义类MyRunnable实现Runnable接口 B:重写run()方法 C:创建MyRunnable类的对象 D:创建Threa ...