传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1497

保存最大流模版。

选一个用户群,就必须要选对应的两个中转站,这种关系类似“最大全闭合子图”的关系,因此构图,求最小割。

#include <cstdio>
#include <cstring>
#include <algorithm> const int maxn = 5005, maxm = 50005, maxe = 400000; int n, m, t1, t2, t3, S, T, ans;
int head[maxn + maxm], to[maxe], next[maxe], from[maxe], cap[maxe], flow[maxe], lb;
int d[maxn + maxm], que[maxn + maxm], head_, tail, h, num[maxn + maxm], p[maxn + maxm]; inline void ist(int aa, int ss, int ca) {
to[lb] = ss;
from[lb] = aa;
next[lb] = head[aa];
head[aa] = lb;
cap[lb] = ca;
++lb; to[lb] = aa;
from[lb] = ss;
next[lb] = head[ss];
head[ss] = lb;
cap[lb] = 0;
++lb;
}
inline int lbl(int i) {
int rt = T;
for (int j = head[i]; j != -1; j = next[j]) {
if (cap[j] > flow[j]) {
rt = std::min(rt, d[to[j]]);
}
}
return rt + 1;
}
inline int fnd(int i) {
for (int j = head[i]; j != -1; j = next[j]) {
if (d[i] == d[to[j]] + 1 && cap[j] > flow[j]) {
return j;
}
}
return -1;
}
inline int maxflow(void) {
int rt = 0, delta;
int i = S, j, x;
while (d[S] <= T) {
j = fnd(i);
if (j != -1) {
p[to[j]] = j;
i = to[j];
if (i == T) {
delta = 2147483647;
for (; i != S; i = from[p[i]]) {
delta = std::min(delta, cap[p[i]] - flow[p[i]]);
}
for (i = T; i != S; i = from[p[i]]) {
flow[p[i]] += delta;
flow[p[i] ^ 1] -= delta;
}
rt += delta;
}
}
else {
x = lbl(i);
if (--num[d[i]] == 0) {
return rt;
}
++num[d[i] = x];
if (i != S) {
i = from[p[i]];
}
}
}
return rt;
} int main(void) {
//freopen("in.txt", "r", stdin);
memset(head, -1, sizeof head);
memset(next, -1, sizeof next);
scanf("%d%d", &n, &m);
T = n + m + 1; for (int i = 1; i <= n; ++i) {
scanf("%d", &t3);
ist(S, i, t3);
}
for (int i = n + 1; i <= n + m; ++i) {
scanf("%d%d%d", &t1, &t2, &t3);
ans += t3;
ist(i, T, t3);
ist(t1, i, 0x3c3c3c3c);
ist(t2, i, 0x3c3c3c3c);
} memset(d, 0x3c, sizeof d);
d[T] = 0;
que[tail++] = T;
while (head_ != tail) {
h = que[head_++];
++num[d[h]];
for (int j = head[h]; j != -1; j = next[j]) {
if ((j & 1) && d[to[j]] == 0x3c3c3c3c) {
d[to[j]] = d[h] + 1;
que[tail++] = to[j];
}
}
}
printf("%d\n", ans - maxflow());
return 0;
}

  

_bzoj1497 [NOI2006]最大获利【最大权闭合子图】的更多相关文章

  1. P4174 [NOI2006]最大获利 (最大权闭合子图)

    P4174 [NOI2006]最大获利 (最大权闭合子图) 题目链接 题意 建\(i\)站台需要\(p_i\)的花费,当\(A_i,B_i\)都建立时获得\(C_i\)的利润,求最大的利润 思路 最大 ...

  2. BZOJ1497[NOI2006]最大获利——最大权闭合子图

    题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成 ...

  3. 【BZOJ】1497: [NOI2006]最大获利 最大权闭合子图或最小割

    [题意]给定n个点,点权为pi.m条边,边权为ci.选择一个点集的收益是在[点集中的边权和]-[点集点权和],求最大获利.n<=5000,m<=50000,0<=ci,pi<= ...

  4. bzoj1497 [NOI2006]最大获利 最大权闭合子图

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路 最大权闭合子图的裸题 一开始知道是这个最大权闭合子图(虽然我不知道名字),但是我 ...

  5. COGS28 [NOI2006] 最大获利[最大权闭合子图]

    [NOI2006] 最大获利 ★★★☆   输入文件:profit.in   输出文件:profit.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] 新的技术正冲击着手 ...

  6. bzoj1497 最大获利(最大权闭合子图)

    题目链接 思路 对于每个中转站向\(T\)连一条权值为建这个中转站代价的边.割掉这条边表示会建这个中转站. 对于每个人向他的两个中转站连一条权值为\(INF\)的边.然后从\(S\)向这个人连一条权值 ...

  7. BZOJ 1497 最大获利(最大权闭合子图)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路:由题意可以得知,每个顾客都依赖2个中转站,那么让中转站连有向边到汇点,流量为它的建设费用 ...

  8. BZOJ 1497: [NOI2006]最大获利(最大权闭合子图)

    1497: [NOI2006]最大获利 Time Limit: 5 Sec  Memory Limit: 64 MB Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机 ...

  9. bzoj1497: [NOI2006]最大获利(最大权闭合子图)

    1497: [NOI2006]最大获利 题目:传送门 题解: %%%关于最大权闭合子图很好的入门题 简单说一下什么叫最大权闭合子图吧...最简单的解释就是正权边连源点,负权边连汇点(注意把边权改为正数 ...

  10. NOI2006 最大获利(最大权闭合子图)

    codevs 1789 最大获利 2006年NOI全国竞赛  时间限制: 2 s  空间限制: 128000 KB   题目描述 Description 新的技术正冲击着手机通讯市场,对于各大运营商来 ...

随机推荐

  1. jmeter的master远程运行和停止slave

    jmeter可以部署成master-slave或者叫client-server模式,一个master(client)可以同时控制多个slave(server). 在linux系统下,master(cl ...

  2. Robocopy进行大量迁移

    建议使用 Windows Server 2012 R2 或 Windows Server 2012 随附的 Robocopy.exe 版本. 即然官方建议我们用2012或2012R2所带的Roboco ...

  3. [Bash] Move and Copy Files and Folders with Bash

    In this lesson we’ll learn how to move and rename files (mv) and copy (cp) them. Move index.html to ...

  4. MongoDB数据库的初识

    1,MongoDB是基于分布式文件存储的数据库,有c++语言编写,旨在为WEB应用提供可扩展的高效性能数据存储解决方案. MongoDB是一个介于关系型数据库和非关系数据库之间的产品,是非关系数据库当 ...

  5. Vue常用语法及命令

    1,Vue常用语法 vue常用语法之变量的定义 // 1,变量相关 // 变量的提升 var username = "雪雪"; var username ; console.log ...

  6. debian包之间的关系

    1 debian包之间存在两大类关系 第一,依赖 第二,冲突 2 依赖类关系 2.1 depends 2.2 pre-depends 2.3 recommends 2.4 suggests 2.5 e ...

  7. 解决Android 6.0获取wifi Mac地址为02:00:00:00:00:00问题【转】

    本文转载自:http://www.jb51.net/article/128398.htm 这篇文章主要介绍了Android 6.0获取wifi Mac地址为02:00:00:00:00:00的解决方法 ...

  8. YTU 2894: G--我要去内蒙古大草原

    2894: G--我要去内蒙古大草原 时间限制: 1 Sec  内存限制: 128 MB 提交: 162  解决: 8 题目描述 春天到了,小明想要从烟台开车去内蒙古大草原放松一下,这两地的距离是14 ...

  9. 最安全的api接口认证

    最安全的api接口认证 实现步骤: 1.客户端与服务器都存放着用于验证的Token字段,客户端在本地把自己的 用户名+时间戳+Token 组合进行MD5加密后生成一段新的md5-token. 2.客户 ...

  10. vss操作说明

    vss命令行   一.环境变量配置 “我的电脑”->“属性”->“高级”->“系统环境变量” 1) 添加追加环境变量 名称为:Path:值为:VSS应用程序所在目录 例如:D:\Pr ...