Vijos1352 NOI2006 最大获利 最小权闭合图
Orz胡伯涛《最小割模型在信息学竞赛中的应用》
建图方法:
设立源点S和汇点T,S和用户(共M个)连边,载流量为满足其要求的获利
T和中转站(共N个)连边,载流量为建立该中转站的费用
每个用户向对应的2个中转站连边,载流量为inf
对该图跑一遍最大流,求出最小割f,(∑Ci)-f就是答案
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
;
;
const int inf=0x3f3f3f3f;
struct Edge
{
int to,next;
int capacity;
void assign(int t,int n,int c)
{ to=t; next=n; capacity=c; }
};
Edge elist[*maxE];
int head[maxV];
int ecnt;
void initEdge()
{
memset(head,-,sizeof(head));
ecnt=;
}
inline void addEdge(int from,int to,int capacity)
{
elist[ecnt].assign(to,head[from],capacity);
head[from]=ecnt++;
elist[ecnt].assign();
head[to]=ecnt++;
}
int N,M;
int tot;
int sink; //1~M:user M+1~N:station
void input()
{
scanf("%d%d",&N,&M);
initEdge();
sink=N+M+;
int cost;
;i<=N;i++)
{
scanf("%d",&cost);
addEdge(M+i,sink,cost);
}
tot=;
int v1,v2;
;i<=M;i++)
{
scanf("%d%d%d",&v1,&v2,&cost);
tot+=cost;
addEdge(i,M+v1,inf);
addEdge(i,M+v2,inf);
addEdge(,i,cost);
}
}
int layer[maxV];
std::queue<int> que;
bool bfs()
{
memset(layer,,sizeof(layer));
layer[]=;
que.push();
while(!que.empty())
{
int cur=que.front();
que.pop();
;e=elist[e].next)
{
int& to=elist[e].to;
int& cp=elist[e].capacity;
if(!layer[to] && cp)
{
layer[to]=layer[cur]+;
que.push(to);
}
}
}
return layer[sink];
}
int dfs(int cur,int flow)
{
if(cur==sink) return flow;
);
;e=elist[e].next)
{
int& to=elist[e].to;
int& cp=elist[e].capacity;
&& cp)
{
int tp=dfs(to,std::min(flow,cp));
res+=tp; flow-=tp;
elist[e].capacity-=tp;
elist[e^].capacity+=tp;
if(!flow) return res;
}
}
return res;
}
int dinic()
{
);
,inf);
return res;
}
int main()
{
input();
printf("%d\n",tot-dinic());
;
}
Vijos1352 NOI2006 最大获利 最小权闭合图的更多相关文章
- P4174 [NOI2006]最大获利 (最大权闭合子图)
P4174 [NOI2006]最大获利 (最大权闭合子图) 题目链接 题意 建\(i\)站台需要\(p_i\)的花费,当\(A_i,B_i\)都建立时获得\(C_i\)的利润,求最大的利润 思路 最大 ...
- BZOJ1497: [NOI2006]最大获利[最小割 最大闭合子图]
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 4375 Solved: 2142[Submit][Status] ...
- BZOJ 1497: [NOI2006]最大获利 最小割
1497: [NOI2006]最大获利 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1497 Description 新的技术正冲击着手 ...
- COGS28 [NOI2006] 最大获利[最大权闭合子图]
[NOI2006] 最大获利 ★★★☆ 输入文件:profit.in 输出文件:profit.out 简单对比时间限制:2 s 内存限制:512 MB [问题描述] 新的技术正冲击着手 ...
- 【BZOJ】1497: [NOI2006]最大获利 最大权闭合子图或最小割
[题意]给定n个点,点权为pi.m条边,边权为ci.选择一个点集的收益是在[点集中的边权和]-[点集点权和],求最大获利.n<=5000,m<=50000,0<=ci,pi<= ...
- BZOJ.1497.[NOI2006]最大获利(最小割 最大权闭合子图Dinic)
题目链接 //裸最大权闭合子图... #include<cstdio> #include<cctype> #include<algorithm> #define g ...
- 【BZOJ1497】[NOI2006]最大获利 最小割
裸的最小割,很经典的模型. 建图:要求总收益-总成本最大,那么将每条弧与源点相连,流量为成本,每个收益与汇点相连,流量为收益,然后每条弧与它所能到达的收益相连,流量为inf. 与源点相连的是未被选中的 ...
- BZOJ1497[NOI2006]最大获利——最大权闭合子图
题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成 ...
- bzoj1497 [NOI2006]最大获利 最大权闭合子图
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路 最大权闭合子图的裸题 一开始知道是这个最大权闭合子图(虽然我不知道名字),但是我 ...
随机推荐
- 2015第45周五IE11实用开发工具摘录及设置IE缓存
UI响应工具的作用 UI响应工具顾名思义就是查看UI响应时间的工具,通过这个工具可以帮助我们确定应用中的哪些组件占用了多少CPU时间,让我们之后可以更有针对性的进行优化,从而最大限度地改善应用性能,同 ...
- 连接池 BoneCPDataSource
一篇连接池不错的文章 http://blog.csdn.net/vincent_czz/article/details/7646392
- Apple Pay强势来袭,开发者应做的事情
"iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C2C,X2X都有可能需要这个屌丝的付款功能了,在此简单的研究一下." ...
- 使用hibernate更新数据库记录的信息的相关学习记录
截选代码(可能遗漏标点符号): package name.sql; import java.util.List; import name.session.HibernateSessionFactory ...
- JavaWeb学习总结(1-53)
本文转自孤傲苍狼 博客,JavaWeb学习总结 专题,一共53集,讲解简洁清晰,适合入门,链接和截图如下 http://www.cnblogs.com/xdp-gacl/category/574705 ...
- [置顶] Array ArrayList LinkList的区别剖析
这是一个面试中我们经常被问到的问题 Array.ArrayList.LinkList之间的区别:Array.ArrayList.LinkList均属于泛型的范畴,都用来存放元素,主要区别是Array是 ...
- 【转】setAnimation和startAnimation区别
http://stackoverflow.com/questions/10909865/setanimation-vs-startanimation-in-android http://blog.cs ...
- 分布式还是混合式? 谈CDN架构对服务质量的影响
传统分布式模型 通 常,内容分发网络(CDN)採用分布式模型.在这样的模型里, 用户的文件存放在一个源server上.而且由大量边缘server负责分发这些文件.这些边缘server的磁盘空间比較小. ...
- AndroidStudio 快捷键使用
经常使用快捷键使用搜集 1. Ctrl+D: 集合了复制和粘贴两个操作,假设有选中的部分就复制选中的部分.并在选中部分的后面粘贴出来,假设没有选中的部分.就复制光标所在的行.并在此行的以下粘贴出来. ...
- iOS-UIControls介绍
iOS-UIControls类介绍 UIControl的继承关系 UIControl是 UIKit中UISwitch(开关).UIButton(按钮).UISegmentedControl(分段控件) ...