BZOJ2039_employ人员雇佣_KEY
网络流,求最小割。
设tot为所有盈利的和,即所有人(不花钱)雇佣。
对于S->i建一条容量为c[i]的边,i->j建一条S[i][j]*2的边,之所以这样建是因为如果不选这个人还会亏S[i][j]。
对于i->T建一条容量为∑S[i][j]的边。
最小割=最大流,跑Dinic
code:
- /**************************************************************
- Problem: 2039
- User: yekehe
- Language: C++
- Result: Accepted
- Time:4428 ms
- Memory:52316 kb
- ****************************************************************/
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int read()
- {
- char c;while(c=getchar(),c<''||c>'');
- int x=c-'';while(c=getchar(),c>=''&&c<='')x=x*+c-'';
- return x;
- }
- int N,a[],MP[][];
- int head[],nxt[],To[],W[],cnt;
- void add(int x,int y,int c)
- {
- To[cnt]=y,W[cnt]=c;
- nxt[cnt]=head[x];
- head[x]=cnt;
- cnt++;
- }
- int dist[],l[],h,t;
- int BFS()
- {
- h=t=;
- memset(dist,0xfff,sizeof dist);
- l[++t]=,dist[]=;
- while(h<t){
- int front=l[++h];
- for(int i=head[front];i!=-;i=nxt[i]){
- if(dist[To[i]]==- && W[i]){
- dist[To[i]]=dist[front]+;
- l[++t]=To[i];
- }
- }
- }
- return dist[N+]!=-;
- }
- int DFS(int x,int w)
- {
- if(x==N+ || !w)return w;
- int res=;
- for(int i=head[x];i!=-&&w;i=nxt[i]){
- if(dist[x]+==dist[To[i]] && W[i]){
- int DK=DFS(To[i],min(w,W[i]));
- res+=DK;w-=DK;
- W[i]-=DK,W[i^]+=DK;
- }
- }
- if(!res)dist[x]=-;
- return res;
- }
- int tot=;
- void Dinic()
- {
- int ans=;
- while(BFS())
- ans+=DFS(,2e9);
- printf("%d",tot-ans);
- return ;
- }
- int main()
- {
- memset(head,-,sizeof head);
- memset(nxt,-,sizeof nxt);
- N=read();
- register int i,j;
- for(i=;i<=N;i++)
- a[i]=read(),add(,i,a[i]),add(i,,);
- for(i=;i<=N;i++)
- for(j=;j<=N;j++)
- MP[i][j]=read(),tot+=MP[i][j];
- for(i=;i<=N;i++)
- for(j=i+;j<=N;j++)
- add(i,j,MP[i][j]<<),add(j,i,MP[i][j]<<);
- for(i=;i<=N;i++){
- int res=;for(j=;j<=N;j++)res+=MP[i][j];
- add(i,N+,res),add(N+,i,);
- }
- Dinic();
- return ;
- }
BZOJ2039_employ人员雇佣_KEY的更多相关文章
- BZOJ 2039: [2009国家集训队]employ人员雇佣
2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1369 Solved: 667[Submit ...
- BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割
BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作 ...
- 【BZOJ 2039】 2039: [2009国家集训队]employ人员雇佣 (最小割)
2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1511 Solved: 728 Descri ...
- 【BZOJ2039】[2009国家集训队]employ人员雇佣 最小割
[BZOJ2039][2009国家集训队]employ人员雇佣 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献 ...
- 【BZOJ2039】【2009国家集训队】人员雇佣 [最小割]
人员雇佣 Time Limit: 20 Sec Memory Limit: 259 MB[Submit][Status][Discuss] Description 作为一个富有经营头脑的富翁,小L决 ...
- BZOJ 2039 人员雇佣 二元关系 最小割
题面太长了,请各位自行品尝—>人员雇佣 分析: 借用题解的描述: a.选择每个人有一个代价Ai b.如果有两个人同时选择就可以获得收益Ei,j c.如果一个人选择另一个不选会产生代价Ei,j 这 ...
- BZOJ2039 [2009国家集训队]employ人员雇佣
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2039 鉴于一开始看题如果不仔细是看不懂题目的,还是说一下题目大意 [题目大意]:给定n个人 ...
- 2039: [2009国家集训队]employ人员雇佣
任意门 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献指数,(我们用Ei,j表示i经理对j经理的了解程度),即 ...
- BZOJ 2039 人员雇佣(最小割)
最小割的建图模式一般是,先算出总收益,然后再通过网络模型进行割边减去部分权值. 然后我们需要思考什么才能带来收益,什么才能有权值冲突. s连向选的点,t连向不选的点,那么收益的减少量应该就是将s集和t ...
随机推荐
- 左右值无限级分类 MVC + EntityFramework 的简单实现
在度娘上查了大半个月的资料,最后发现每个网友分享的文章都有一定的错误(PS:大家是故意的么?).最后是在看了一个ASP版本后知道了大概流程:看了一个存储过程实现的文章后知道了大概需要的功能:看了一个S ...
- CSS 预处理器
在程序员眼里,css不像其他程序语言(例如PHP, Javascript等等),有自己的变量.常量.条件语句以及一些编程语法,它只是一行行单纯的属性描述,写起来相当费事,而且代码难以组织和维护.自然的 ...
- css3动画相关笔记
1.$(".aa").delay(2500).animate({width:0}); // 延迟 2.setTimeout(function(){ --> css3 anim ...
- python之九九乘法表
for i in range(1,10): print( ) for j in range(1,i+1): print('%d*%d=%d '%(i,j,i*j),end="") ...
- momenta
编程:1.dp的题 2.白纸写代码,给一串数和一个目标值,使用四则运算和括号使得这串数最后计算结果为目标值,打印出所有的方案,要求是这些数每个最多被使用一次,可以不被用到. 3.考了一个查找数组里,未 ...
- MAC 下 安装redis 并配置 php redis 扩展
下载 redis redis-3.1.2.tgz sudo tar -xzf redis-3.1.2.tgz cd redis-3.1.2 sudo phpize grep: /usr/include ...
- 解决Bug步骤
1.看报错.将bug定位到文件.类.方法. 2.打断点.将bug定位到具体代码行号. 3.分析断点输出结果. 4.结合报错和断点结果,修改代码. 总之:拆解问题.定位问题.分析问题.解决问题.
- HDU 1599 find the mincost route(floyd求最小环 无向图)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1599 find the mincost route Time Limit: 1000/2000 MS ...
- f-stack中nginx配置后make出现error: ignoring return value of ‘ftruncate’
问题 Nginx 配置后 make 出现error: src/os/unix/ngx_process_cycle.c: In function 'ngx_start_worker_processes' ...
- 不会发布npm包?进来看看?
前言 npm(Node Package Manager),一个Node的包管理器,平时我们常用的公共模块(插件)或者叫做包大多都放在上面,所以接下来要封装的插件,我们就简单称它为npm包,本文从就从这 ...