题目传送门

网络流,求最小割。

设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的更多相关文章

  1. BZOJ 2039: [2009国家集训队]employ人员雇佣

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1369  Solved: 667[Submit ...

  2. BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割

    BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作 ...

  3. 【BZOJ 2039】 2039: [2009国家集训队]employ人员雇佣 (最小割)

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1511  Solved: 728 Descri ...

  4. 【BZOJ2039】[2009国家集训队]employ人员雇佣 最小割

    [BZOJ2039][2009国家集训队]employ人员雇佣 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献 ...

  5. 【BZOJ2039】【2009国家集训队】人员雇佣 [最小割]

    人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description 作为一个富有经营头脑的富翁,小L决 ...

  6. BZOJ 2039 人员雇佣 二元关系 最小割

    题面太长了,请各位自行品尝—>人员雇佣 分析: 借用题解的描述: a.选择每个人有一个代价Ai b.如果有两个人同时选择就可以获得收益Ei,j c.如果一个人选择另一个不选会产生代价Ei,j 这 ...

  7. BZOJ2039 [2009国家集训队]employ人员雇佣

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2039 鉴于一开始看题如果不仔细是看不懂题目的,还是说一下题目大意 [题目大意]:给定n个人 ...

  8. 2039: [2009国家集训队]employ人员雇佣

    任意门 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献指数,(我们用Ei,j表示i经理对j经理的了解程度),即 ...

  9. BZOJ 2039 人员雇佣(最小割)

    最小割的建图模式一般是,先算出总收益,然后再通过网络模型进行割边减去部分权值. 然后我们需要思考什么才能带来收益,什么才能有权值冲突. s连向选的点,t连向不选的点,那么收益的减少量应该就是将s集和t ...

随机推荐

  1. Yahoo!团队经验:网站性能优化的34条黄金法则

    英文原文:http://developer.yahoo.com/performance/rules.html 1.尽量减少HTTP请求次数 (1)合并文件就是通过把所有的脚本放到一个文件中来减少HTT ...

  2. python中的装饰

    在面向对象(OOP)的设计模式中,decorator被称为装饰模式.OOP的装饰模式需要通过继承和组合来实现,而Python除了能支持OOP的decorator外,直接从语法层次支持decorator ...

  3. calayer defaultValueForKey

    例如:我们新建一个SubLayer类继承自CALayer,则在SubLayer.m中重写此方法.如下: + (id)defaultValueForKey:(NSString *)key { if ([ ...

  4. [19/04/23-星期二] GOF23_创建型模式(工厂模式、抽象工厂模式)

    一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟 ...

  5. 【bbs】login.php

    require的路径 整体结构的复用 渐变效果的加入 按钮:实现背景透明,文字不透明:在background-color中使用rgba,标准浏览器中,背景透明,文字不透明background-colo ...

  6. spring boot +druid数据库连接池配置

    1.启动应用入口修改 增加servlet注解 import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFacto ...

  7. Gradle初步

    一.介绍 Gradle是一个基于 JVM 的富有突破性构建工具. 它为您提供了: 一个像 ant 一样,通用的灵活的构建工具 一种可切换的,像 maven 一样的基于约定优于配置的构建框架 强大的多工 ...

  8. NSOJ 4621 posters (离散化+线段树)

    posters 时间限制: 1000ms 内存限制: 128000KB 64位整型:      Java 类名: 上一题 提交 运行结果 统计 讨论版 下一题 题目描述 The citizens of ...

  9. keepalived 的进程/usr/sbin/keepalived -D 只有2个

    操作系统:openSUSE 11.3 (x86_64) /usr/sbin/keepalived -D  只有2条 日志:ls  /var/log/messages* -lrth Can't init ...

  10. Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法

    问题 在编译时出现如下error: error:This file requires compiler and library support for the ISO C++ 2011 standar ...