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 ...
随机推荐
- JS如何去掉一个数组的重复元素 (数组去重)
一.思路如下: 定义一个新数组,将老数组遍历一遍,再进行判断,如果新数组里面没有老数组的元素就添加,否则就不添加,最终输出整个新数组. 二.代码如下: var arr = ["a" ...
- Ping服务
什么是Ping服务 ping是基于XML_RPC标准协议的更新通告服务,用于博客把内容更新快速通知给百度,以便百度及时进行抓取和更新. Ping服务使用方法 你可以采取手动通知和自动通知两种方式使用p ...
- BZOJ1334:[Baltic2008]Elect(背包DP)
Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...
- Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier
php 连接 sqlserver 时, 程序生成的sql语句, 如果在 sqlserver客户端执行时, 可以正确返回结果, 在程序中执行, 总返回 false, 打开调试也没有任何错误. 无意中发现 ...
- 新闻cms管理系统(三) ------菜单管理
1.前期准备工作 (1)模板介绍 添加菜单的模板页面 菜单管理首页: 添加菜单页面: (2)公共类引入介绍 公共函数文件的引入(位置: Application/Admin/Controller/Com ...
- PAT——1024. 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...
- 如何求出数组中最小(或者最大)的k个数(least k问题)
输入n个整数,如何求出其中最小的k个数? 解法1. 当然最直观的思路是将数组排序,然后就可以找出其中最小的k个数了,时间复杂度以快速排序为例,是O(nlogn): 解法2. 借助划分(Partitio ...
- e2fsprogs
开源文件系统ext2/ext3/ext4管理工具e2progs包含的工具组件: 1.debugfs: ext2/ext3/ext4文件系统调试工具.debugfs是一个交互式的文件系统调试工具,可以用 ...
- 将硬件规定的通信协议用Lua实现(涉及到很多Lua通信的数据转换)
1:这次处理的是大唐的gps通信协议,先简单介绍一下他规定的通信规则: 信息结构: 传输说明: 信息结构中的各个字节书写时都是以十六进制标识,两位数组成.传输时,SOI和EOI(SOI=7EH,EOI ...
- python正则中如何匹配汉字以及encode(‘utf-8’)和decode(‘utf-8’)的互转
正则表达式: [\u2E80-\u9FFF]+$ 匹配所有东亚区的语言 [\u4E00-\u9FFF]+$ 匹配简体和繁体 [\u4E00-\u9FA5]+$ 匹配简体 <input ty ...