1497: [NOI2006]最大获利
新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战。THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究、站址勘测、最优化等项目。在前期市场调查和站址勘测之后,公司得到了一共N个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需要投入的成本也是不一样的,所幸在前期调查之后这些都是已知数据:建立第i个通讯中转站需要的成本为Pi(1≤i≤N)。另外公司调查得出了所有期望中的用户群,一共M个。关于第i个用户群的信息概括为Ai, Bi和Ci:这些用户会使用中转站Ai和中转站Bi进行通讯,公司可以获益Ci。(1≤i≤M, 1≤Ai, Bi≤N) THU集团的CS&T公司可以有选择的建立一些中转站(投入成本),为一些用户提供服务并获得收益(获益之和)。那么如何选择最终建立的中转站才能让公司的净获利最大呢?(净获利 = 获益之和 - 投入成本之和)
最大权闭合子图裸。。
#include <bits/stdc++.h>
using namespace std; const int maxv = + ;
const int maxe = + ; int n, m, p[maxv];
int e, h[maxv], to[maxe*], nxt[maxe*], cap[maxe*];
void addEdge(int u, int v, int c) {
nxt[e] = h[u], to[e] = v, cap[e] = c, h[u] = e++;
nxt[e] = h[v], to[e] = u, cap[e] = , h[v] = e++;
} int dis[maxv];
int que[maxv*], f, b, c[maxv];
int s, t;
bool bfs() {
que[f = b = ] = s;
memset(dis, 0x3f, sizeof (int)*(t+));
dis[s] = ;
while (f <= b) {
int u = que[f++];
for (int i = h[u]; i != -; i = nxt[i])
if (dis[to[i]] > dis[u]+ && cap[i] > ) {
dis[to[i]] = dis[u]+;
que[++b] = to[i];
}
}
return dis[t] != dis[t+];
}
int dfs(int u, int a) {
if (u == t || a == )
return a;
int f, fl = ;
for (int &i=c[u]; i!=-; i = nxt[i]) {
int v = to[i], p = cap[i];
if (dis[v]==dis[u]+ && (f=dfs(v, min(a, p)))>) {
a -= f;
cap[i] -= f;
cap[i^] += f;
fl += f;
if (a==) break;
}
}
return fl;
}
int MaxFlow() {
int fl = ;
while (bfs()) {
memcpy(c, h, sizeof (int)*(t+));
fl += dfs(s, 0x3f3f3f3f);
}
return fl;
} int main() {
#ifdef love_lhy
freopen("1497.in", "r", stdin);
freopen("1497.out", "w", stdout);
#endif
scanf("%d%d", &n, &m);
int sum = , a, b, c;
e = ;
memset(h, -, sizeof h);
s = , t = n+m+;
for (int i = ; i <= n; ++i) {
scanf("%d", &p[i]);
addEdge(m+i, t, p[i]);
}
for (int i = ; i <= m; ++i) {
scanf("%d%d%d", &a, &b, &c);
sum += c;
addEdge(s, i, c);
addEdge(i, m+a, 0x3f3f3f3f);
addEdge(i, m+b, 0x3f3f3f3f);
}
printf("%d\n", sum-MaxFlow());
return ;
}
1497: [NOI2006]最大获利的更多相关文章
- BZOJ 1497: [NOI2006]最大获利 最小割
1497: [NOI2006]最大获利 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1497 Description 新的技术正冲击着手 ...
- BZOJ 1497: [NOI2006]最大获利( 最大流 )
下午到周六早上是期末考试...但是我还是坚守在机房....要挂的节奏啊.... 这道题就是网络流 , 建图后就最大流跑啊跑啊跑... --------------------------------- ...
- BZOJ 1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MB Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机 ...
- 1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 5503 Solved: 2673 Description 新的技 ...
- BZOJ 1497: [NOI2006]最大获利
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 4572 Solved: 2239[Submit][Status] ...
- 最大权闭合图 && 【BZOJ】1497: [NOI2006]最大获利
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 最大权闭合图详细请看胡伯涛论文<最小割模型在信息学竞赛中的应用>,我在这里截图它的 ...
- 1497: [NOI2006]最大获利 - BZOJ
Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一 ...
- BZOJ 1497 [NOI2006]最大获利 ——网络流
[题目分析] 最大权闭合子图. S到集合1容量为获利的大小,集合2到T为所需要付出的相反数. 然后求出最大流,然后用总的获利相减即可. [代码] #include <cstdio> #in ...
- BZOJ 1497: [NOI2006]最大获利(最大权闭合图)
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 题意: 思路: 论文题,只要看过论文的话就是小菜一碟啦~ 每个用户群i作为一个结点分别向相应的 ...
随机推荐
- 项目Header组件的开发注意事项
npm install stylus --save npm install stylus-loader --save 移动端一般采用rem布局方式 Header组件里iconfont的使用和代码优化: ...
- bzoj千题计划125:bzoj1037: [ZJOI2008]生日聚会Party
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 一个区间是否满足 任意连续的一段,男孩与女孩的数目之差不超过k, 取决于男孩与女孩数目之差的最 ...
- SCOI2012喵星球上的点名
http://codevs.cn/problem/2403/ 2012年省队选拔赛四川 时间限制: 2 s 空间限制: 128000 KB 题目描述 Description a180285幸运 ...
- Could not open input file: artisan
执行php artisan 命令,报错Could not open input file: artisan artisan 是 Laravel 项目下的指令文件,在Laravel 项目的根目录下可以看 ...
- llg的农场(farm)
评测传送门 [题目描述] llg 是一名快乐的农民,他拥有一个很大的农场,并且种了各种各样的瓜果蔬菜,到了每年秋天,他就可以把所有蔬菜水果卖到市场上,这样他就可以获利.但今年他遇到了一个难题——有许多 ...
- VUE常用指令总结!
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2017-2018-2 20179205《网络攻防技术与实践》Windows攻击实验
Windows攻击实验 实验描述: 使用Metaspoit攻击MS08-067,提交正确得到远程shell过程的截图(不少于五张). MS08-067漏洞介绍 MS08-067漏洞的全称为&quo ...
- go 切片
切片定义 切片是基于数组类型做的一层封装.它非常灵活,可以自动扩容. var a []int //定义一个int类型的空切片 切片初始化, a[start:end]创建一个包括从start到end-1 ...
- C#基础学习之FileStream
FileStream和File的区别 后者比前者给内存带来压力大. FileStream可以操作字节也就是可以保存任何类型的文件. 1.FileStream读文件操作 //OpenOrCreate: ...
- SQL 根据关联表更新主表中字段数据
今天遇到一个客户的数据更新问题,两个相关联的表,一个主表用于保存单据主要信息,一个副表用于保存单据的明细信息:现在要把主表的其中一个字段的数据更新到副表的一个字段中保存.精通的SQL语法的,当然是很简 ...