_bzoj1497 [NOI2006]最大获利【最大权闭合子图】
传送门: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]最大获利【最大权闭合子图】的更多相关文章
- P4174 [NOI2006]最大获利 (最大权闭合子图)
P4174 [NOI2006]最大获利 (最大权闭合子图) 题目链接 题意 建\(i\)站台需要\(p_i\)的花费,当\(A_i,B_i\)都建立时获得\(C_i\)的利润,求最大的利润 思路 最大 ...
- BZOJ1497[NOI2006]最大获利——最大权闭合子图
题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成 ...
- 【BZOJ】1497: [NOI2006]最大获利 最大权闭合子图或最小割
[题意]给定n个点,点权为pi.m条边,边权为ci.选择一个点集的收益是在[点集中的边权和]-[点集点权和],求最大获利.n<=5000,m<=50000,0<=ci,pi<= ...
- bzoj1497 [NOI2006]最大获利 最大权闭合子图
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路 最大权闭合子图的裸题 一开始知道是这个最大权闭合子图(虽然我不知道名字),但是我 ...
- COGS28 [NOI2006] 最大获利[最大权闭合子图]
[NOI2006] 最大获利 ★★★☆ 输入文件:profit.in 输出文件:profit.out 简单对比时间限制:2 s 内存限制:512 MB [问题描述] 新的技术正冲击着手 ...
- bzoj1497 最大获利(最大权闭合子图)
题目链接 思路 对于每个中转站向\(T\)连一条权值为建这个中转站代价的边.割掉这条边表示会建这个中转站. 对于每个人向他的两个中转站连一条权值为\(INF\)的边.然后从\(S\)向这个人连一条权值 ...
- BZOJ 1497 最大获利(最大权闭合子图)
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路:由题意可以得知,每个顾客都依赖2个中转站,那么让中转站连有向边到汇点,流量为它的建设费用 ...
- BZOJ 1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MB Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机 ...
- bzoj1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 题目:传送门 题解: %%%关于最大权闭合子图很好的入门题 简单说一下什么叫最大权闭合子图吧...最简单的解释就是正权边连源点,负权边连汇点(注意把边权改为正数 ...
- NOI2006 最大获利(最大权闭合子图)
codevs 1789 最大获利 2006年NOI全国竞赛 时间限制: 2 s 空间限制: 128000 KB 题目描述 Description 新的技术正冲击着手机通讯市场,对于各大运营商来 ...
随机推荐
- hdu1181 dfs搜索之变形课
原题地址 这道题数据据说比較水,除了第一组数据是Yes以外.其余都是No.非常多人抓住这点就水过了.当然了,我认为那样过了也没什么意思.刷oj刷的是质量不是数量. 这道题从题目上来看是个不错的 搜索题 ...
- pagePiling.js - 创建美丽的全屏滚动效果
在线演示 在线演示 本地下载 全屏滚动效果是近期很流行的网页设计形式,带给用户良好的视觉和交互体验. pagePiling.js 这款jQuery插件能够帮助前端开发者轻松实现这样的效果.支持全部的主 ...
- Deepin-安装laravel
首先获取到composer.phar wget https://getcomposer.org/download/1.6.3/composer.phar 下载以后移动到目标区域 sudo mv com ...
- Hadoop-08-Hive本地独立式安装
1.安装mysql sudo apt-get install mysql-server mysql-client 2.使用root账户登录mysql数据库,新建存放hive元数据的数据库.如果叫hiv ...
- Zookeeper 简单操作
1. 连接到zookeeper服务 [java2000_wl@localhost zookeeper-3]$ bin/zkCli.sh -server 127.0.0.1:2181 也可以连接远端的 ...
- ascii与unicode,utf-8小结
ascii是以一个字节存储英文和特殊字符,不支持中文的处理.unicode占用的是两个字节,可以存储中文.utf-8占用三个字节,可以根据存储的内容进行中英文的转换. Python的解释器是不支持中文 ...
- “var arr = []; ”和 “var arr = {};” 的差别
1.面试题 var arr = []; var arr = {}; 比較上述代码有什么差别? 2.解析 var arr = [];是一个数组对象 var arr = {} ...
- sysinfo 系统调用
在分析luci时,看到 usr/lib/luci/sys.lua 里调用 nixio.sysinfo().这是一个c调用lua的用例.在nixio的代码process.c里导出了给lua调用的接口.在 ...
- 4 Ionic导航和核心组件--旅游应用
简介:在本节课中,我们将会通过一个虚构的旅游景点来构建一款功能完善的应用.本应用的核心特性是管理用户的应用内导航.本节课的主要目的,是展现构建一个完整的应用的过程. 无论是什么移动应用,最重要的功能之 ...
- 嵌入式开发之dmva---基于DMVA2平台720P高清智能分析
http://wenku.baidu.com/view/2190746ba45177232f60a2b8.html