P4174 [NOI2006]最大获利(网络流)】的更多相关文章

P4174 [NOI2006]最大获利 还是最大权闭合子图的题 对于每个中转站$k$:$link(k,T,P_k)$ 对于每个用户$i$.中转站$A_i,B_i$.贡献$C_i$ $link(S,i,C_i)$ $link(i,A_i,inf)$ $link(i,B_i,inf)$ 蓝后就可以跑最小割辣 #include<iostream> #include<cstdio> #include<cstring> #include<queue> using na…
P4174 [NOI2006]最大获利 (最大权闭合子图) 题目链接 题意 建\(i\)站台需要\(p_i\)的花费,当\(A_i,B_i\)都建立时获得\(C_i\)的利润,求最大的利润 思路 最大权闭合子图模板题 参考论文 将所有站台与S连接,边权值为\(P_i\),将第\(i\)个利润与\(T\)连接,边权为\(C_i\),再与\(A_i,B_i\)连接,边权为\(inf\),跑网络流,最小割 = 建立站台的花费 + 不要的利润 ,Ans = 所有的利润 - (建立站台的花费 + 不要的利…
P4174 [NOI2006]最大获利 题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究.站址勘测.最优化等项目. 在前期市场调查和站址勘测之后,公司得到了一共 \(N\) 个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需要投入的成本也是不一样的,所幸在前期调查之后这些都是已知数据:建立第 \(…
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 http://172.20.6.3/Problem_Show.asp?id=1344   思路:(最大权闭合图的思路相同) 将所有的用户群获利(正值)作为一个点连一条权值为获利值的边到st点,将所有的建站消耗(输入的是正值但是是在获利中减去的所以实质还是负值)作为一个点连一条权值为消耗值的边到ed点,再将每个用户群点和其依赖的建站点连一条权值为无穷的边,求st到ed的最大流. 此时,所求的最…
[题目分析] 最大权闭合子图. S到集合1容量为获利的大小,集合2到T为所需要付出的相反数. 然后求出最大流,然后用总的获利相减即可. [代码] #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> //#include <map> #include <set> #include <queue> #include <strin…
题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究.站址勘测.最优化等项目. 在前期市场调查和站址勘测之后,公司得到了一共 N 个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需要投入的成本也是不一样的,所幸在前期调查之后这些都是已知数据:建立第 i个通讯中转站需要的成本为 PiP_iPi​ (1≤…
https://www.luogu.org/problemnew/show/P4174 最大权闭合子图的模板 每个通讯站建一个点,点权为-Pi:每个用户建一个点,点权为Ci,分别向Ai和Bi对应的点连边:然后就可以跑了 方法是: 建新源S和新汇T,从S向所有正权点连边,容量为点权值:从所有负权点向T连边,容量为点权值的相反数:原图中所有边容量设为无穷大 跑S到T最大流 原因:(网上都有,自己研究的也不知道有没有偏差) 找出图的任意一个割,其中: 显然不可能割掉容量为无穷大的边: 割掉一条S到u的…
原文链接http://www.cnblogs.com/zhouzhendong/p/8371052.html 题目传送门 - BZOJ1497 题意概括 有n个站要被建立. 建立第i个站的花费为pi. 特别的,当第Ai和Bi都被建立时可以得到收益Ci. 问最大收益为多少. 题解 做法特别巧妙. 我们假装所有的Ci都可以被取到. 然后我们考虑至少要失去多少. 我们对于所有站i,建立S->i的边,边权为Pi. 对于所有的i,建立Ai->i+n,Bi->i+n边权为INF,以及i+n->…
题目大意:同Petya and Graph,数据范围改成$n\leqslant5\times10^3,m\leqslant5\times10^4$ 题解:同上 卡点:无 C++ Code: #include <algorithm> #include <cstdio> #define maxn 5010 #define maxm 50010 const int N = maxn + maxm, M = N + 2 * maxm; const int inf = 0x3f3f3f3f;…
传送门 把用户群和中转站都看成点 用户群权值为正,中转站权值为负 为了获得用户群的权值,我们不得不一起获得中转站负的权值 发现就是裸的最大权闭合子图 那么从用户群连边向中转站,边值INF 从 S 连向用户群,边权为用户群权值 最后从中转站连向 T 边权为中转站权值的绝对值 然后直接最小割 不懂原因的去学一下最大权闭合子图 不解释 // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include<alg…