博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hiho 第119周 最大权闭合子图
阅读量:5281 次
发布时间:2019-06-14

本文共 4095 字,大约阅读时间需要 13 分钟。

描述

周末,小Hi和小Ho所在的班级决定举行一些班级建设活动。

根据周内的调查结果,小Hi和小Ho一共列出了N项不同的活动(编号1..N),第i项活动能够产生a[i]的活跃值。

班级一共有M名学生(编号1..M),邀请编号为i的同学来参加班级建设活动需要消耗b[i]的活跃值。

每项活动都需要某些学生在场才能够进行,若其中有任意一个学生没有被邀请,这项活动就没有办法进行。

班级建设的活跃值是活动产生的总活跃值减去邀请学生所花费的活跃值。

小Hi和小Ho需要选择进行哪些活动,来保证班级建设的活跃值尽可能大。

 

 

比如有3项活动,4名学生:

第1项活动产生5的活跃值,需要编号为1、2的学生才能进行;

第2项活动产生10的活跃值,需要编号为3、4的学生才能进行;

第3项活动产生8的活跃值,需要编号为2、3、4的学生才能进行。

编号为1到4的学生需要消耗的活跃值分别为6、3、5、4。

假设举办活动集合为{1},需要邀请的学生集合为{1,2},则得到的班级活跃值为5-9 = -4。

假设举办活动集合为{2},需要邀请的学生集合为{3,4},则得到的班级活跃值为10-9 = 1。

假设举办活动集合为{2,3},需要邀请的学生集合为{2,3,4},则得到的班级活跃值为18-12 = 6。

假设举办活动集合为{1,2,3},需要邀请的学生集合为{1,2,3,4},则得到的班级活跃值为23-18 = 5。

小Hi和小Ho总是希望班级活跃值越大越好,因此在这个例子中,他们会选择举行活动2和活动3。

闭合子图: 就是按图1说的,1加到集合里面去了,那么与之相连的3,4必须到集合中去,那么一张图就有很多个闭合子图。

然后每个点都有一个权值,要求一个权值最大的子图。

结论:最大权闭合子图 = 正点和-最小割。

分析:

1,一个最小割肯定是一个子图。证明上面有,但是我没看懂。

2,有了上一点:

割的容量C(S,T) = S中的正权点之和+ T中负权点绝对值之和。

闭合子图的权值W = S中的正权点之和 - S中负权点绝对值之和。

可以推出 W = 所有正权点之和 - C(S,T);

还是看图说话吧:

 最大流 = 最小割 = 17,正点之和 = 23,最大权闭合子图 = 23-17 = 6;

 

 

 

 

转载于:https://www.cnblogs.com/TreeDream/p/5942354.html

你可能感兴趣的文章
线程池的概念
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
SWIFT国际资金清算系统
查看>>
站立会议第四天
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
hdu 3938 并查集
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>