/** 题目:poj2987 Firing 最大权闭合子图 边权有正有负 链接:http://poj.org/problem?id=2987 题意:由于金融危机,公司要裁员,如果裁了员工x,那么x的下级都要裁掉,如果x的下级被裁掉,那么x的下级的下级也要裁掉...依次类推 每个员工有个价值,公司裁了员工i,获得价值wi(有正有负), 问公司如何裁员获得最大价值.输出裁员人数以及最大价值. 思路:最大权闭合子图.如果员工x价值wx为正,s->x,cap=wx; 如果员工y价值为wx为负,x->t…
/** 题目:hdu3879 Base Station 最大权闭合子图 边权有正有负 链接:http://acm.hdu.edu.cn/showproblem.php?pid=3879 题意:给出n个地方可以建房子,给出每个地方建房子的费用,如果A,B两个地方建了房子,那么可以获得C的利润. 求建一些房子可以获得的最大利润. 思路:最大权闭合子图. n个房子与t相连,容量为费用.如果A,B两个地方建了房子,那么可以获得利润C.可以新增一个点x,s->x,cap=C; x->a,cap=INF;…
题目链接:http://poj.org/problem?id=2987 Time Limit: 5000MS Memory Limit: 131072K Description You’ve finally got mad at “the world’s most stupid” employees of yours and decided to do some firings. You’re now simply too mad to give response to questions li…
详情请参考http://www.cnblogs.com/kane0526/archive/2013/04/05/3001557.html 值得注意的地方,割边会把图分成两部分,一部分和起点相连,另一部分和汇点相连 我们只需要关注和起点相连的点的点就好,如何统计呢? 只需要从起点开始搜索,只要边不是满流,一直搜就好 然后,答案就是总权值-最小割 注:对于dinic网络流,我还是喜欢LRJ白书上的,用起来方便 #include <cstdio> #include <cstdlib> #…
描述 周末,小Hi和小Ho所在的班级决定举行一些班级建设活动. 根据周内的调查结果,小Hi和小Ho一共列出了N项不同的活动(编号1..N),第i项活动能够产生a[i]的活跃值. 班级一共有M名学生(编号1..M),邀请编号为i的同学来参加班级建设活动需要消耗b[i]的活跃值. 每项活动都需要某些学生在场才能够进行,若其中有任意一个学生没有被邀请,这项活动就没有办法进行. 班级建设的活跃值是活动产生的总活跃值减去邀请学生所花费的活跃值. 小Hi和小Ho需要选择进行哪些活动,来保证班级建设的活跃值尽…
题目链接:http://hihocoder.com/contest/hiho119/problem/1 题意:中文题意. 由于1≤N≤200,1≤M≤200.最极端情况就是中间所有边都是满的,一共有N*M条边,则最多有40000条边. 对于这样的问题有统一的建图策略,提取出问题的最终形态即可按照如下方式建图: 首先建立源点s和汇点t,将源点s与所有权值为正的点相连,容量为权值:将所有权值为负的点与汇点t相连,容量为权值的绝对值:权值为0的点不做处理:同时将原来的边容量设置为无穷大. 利用结论:最…
洛谷 P2762 太空飞行计划问题 P3410 拍照[最大权闭合子图]题解+代码 最大权闭合子图 定义: 如果对于一个点集合,其中任何一个点都不能到达此集合以外的点,这就叫做闭合子图.每个点都有一个权值,那么最大权闭合子图就是权值最大的那个闭合子图. (或者说对于一个点集,这个点集中所有点的出边所指向的点都在此点集中) 求解 超级源点向每个权值为正的点连边,容量为该点权值 每个点权为负的点向超级汇点连边,容量为该点权值相反数 原图中的变,容量为inf 然后跑最小割(最大流) 最后用正点权的总和-…
题目大意:有$N$项活动$M$个人,每个活动$act_i$有一个正的权值$a_i$,每个人$stu_i$有一个负的权值$b_i$.每项活动能够被完成当且仅当该项活动所需的所有人到场.如何选择活动使最终权值总和最大?即对于给定的有向无环图,求出最大权闭合子图的权值. 结论:最大权闭合子图的权值等于所有正权点之和减去最小割. 思路:引理:1.最小割一定是简单割:2.简单割一定和一个闭合子图对应.即最小割一定对应一个闭合子图,且就是最大权闭合子图.证明(摘自HihoCoder):首先有割的容量C(S,…
--一道难在读入的题. 最后解决方案直接getline一行然后是把读优拆掉放进函数,虽然很丑但是过了. 然后就是裸的最大权闭合子图了,把仪器当成负权点向t连流量为其价格的边,s向实验连流量为实验报酬的边,实验向所有它所需要的仪器连流量为inf的边表示不可割断.然后跑最大流即可. 关于输出方案,直接看dinic最后一次bfs的level数组即可,扫到的就是在方案里的. #include<iostream> #include<cstdio> #include<queue>…
裁员 [问题描述] 在一个公司里,老板发现,手下的员工很多都不务正业,真正干事员工的没几个,于是老板决定大裁员,每开除一个人,同时要将其下属一并开除,如果该下属还有下属,照斩不误.给出每个人的贡献值和从属关系,求在最大贡献值的前提下最小剩下多少人及最大贡献值.留下多少人无所谓,现在老板想知道留下的人最大的贡献值是多少. [输入描述] 第一行两个整数n,m,表示有多少个员工与多少个从属关系. 第二行n个整数,表示每个员工的贡献值. 接着m行,每行两个数x,y,表示x是y的下属,一个员工可能有多个下…