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


Time Limit: 20 Sec  Memory Limit: 259 MB
Submit: 1988  Solved: 951
[Submit][Status][Discuss]

Description


作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司。这些经理相互之间合作有一个贡献指数,(我们用Ei,j表示i经理对j经理的了解程度),即当经理i和经理j同时被雇佣时,经理i会对经理j做出贡献,使得所赚得的利润增加Ei,j。当然,雇佣每一个经理都需要花费一定的金钱Ai,对于一些经理可能他做出的贡献不值得他的花费,那么作为一个聪明的人,小L当然不会雇佣他。 然而,那些没有被雇佣的人会被竞争对手所雇佣,这个时候那些人会对你雇佣的经理的工作造成影响,使得所赚得的利润减少Ei,j(注意:这里的Ei,j与上面的Ei,j 是同一个)。 作为一个效率优先的人,小L想雇佣一些人使得净利润最大。你可以帮助小L解决这个问题吗?

Input


第一行有一个整数N<=1000表示经理的个数 第二行有N个整数Ai表示雇佣每个经理需要花费的金钱 接下来的N行中一行包含N个数,表示Ei,j,即经理i对经理j的了解程度。(输入满足Ei,j=Ej,i)

Output


第一行包含一个整数,即所求出的最大值。

Sample Input


3
3 5 100
0 6 1
6 0 2
1 2 0

Sample Output


1

【数据规模和约定】
20%的数据中N<=10
50%的数据中N<=100
100%的数据中 N<=1000, Ei,j<=maxlongint, Ai<=maxlongint

HINT


Source


版权所有者: 林衍凯

分析:


最小割。
s连i 权值为ai

i连t 权值为∑e[i][j]

i连j  权值为2 * e[i][j]
想了半天,我还是滚回去好好啃啃各种论文把。。

AC代码:


# include <iostream>
# include <cstdio>
# include <queue>
# include <cstring>
using namespace std;
typedef long long LL;
const LL inf = 1e16;
const int N = 2e3 + 12;
int head[N],dt,s,t,cur[N],dep[N],n;LL bac;
struct Edge{int to,nex;LL res;
}edge[N * N];
void AddEdge(int u,int v,LL w)
{edge[dt] = (Edge){v,head[u],w};head[u] = dt++;edge[dt] = (Edge){u,head[v],0};head[v] = dt++;
}
queue<int> Q;
bool Bfs()
{for(int i = s;i <= t;i++)dep[i] = -1;dep[s] = 1;Q.push(s);int u;while(!Q.empty()){u = Q.front();Q.pop();for(int i = head[u];~i;i = edge[i].nex)if(dep[edge[i].to] == -1 && edge[i].res){dep[edge[i].to] = dep[u] + 1;Q.push(edge[i].to);}}return dep[t] != -1;
}
LL dfs(int u,LL f)
{if(u == t || !f)return f;LL flow = 0,D;for(int &i = cur[u];~i;i = edge[i].nex)if(dep[edge[i].to] == dep[u] + 1 && (D = dfs(edge[i].to,min(f,edge[i].res)))){edge[i].res -= D;edge[i ^ 1].res += D;f -= D;flow += D;if(!f)break;}return flow;
}
LL Dinic()
{LL flow = 0;while(Bfs()){for(int i = s;i <= t;i++)cur[i] = head[i];flow += dfs(s,inf);}return flow;
}
int main()
{memset(head,-1,sizeof head);scanf("%d",&n);s = 0;t = n + 1;LL x,ret;for(int i = 1;i <= n;i++)scanf("%lld",&x),AddEdge(s,i,x);for(int i = 1;i <= n;i++){ret = 0;for(int j = 1;j <= n;j++){scanf("%lld",&x);AddEdge(i,j,x << 1LL);bac += x;ret += x;}AddEdge(i,t,ret);}printf("%lld\n",bac - Dinic());
}

转载于:https://www.cnblogs.com/lzdhydzzh/p/8782587.html

[Bzoj2039][2009国家集训队]employ人员雇佣(最小割)相关推荐

  1. BZOJ 2039: [2009国家集训队]employ人员雇佣 最小割 二元组建图模型

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 1614  Solved: 789 [Subm ...

  2. bzoj2039[2009国家集训队]employ人员雇佣

    bzoj2039[2009国家集训队]employ人员雇佣 题意: 有N个经理,Ei,j表示i经理对j经理的了解程度,当经理i和经理j同时被雇佣时,利润增加Ei,j*2.同时,雇佣每一个经理都需要花费 ...

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

    二次联通门 : BZOJ 2039: [2009国家集训队]employ人员雇佣 /*BZOJ 2039: [2009国家集训队]employ人员雇佣最小割先全部雇佣每个人向汇点连边后源点分别向i,j ...

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

    题面:BZOJ传送门 网络流的题真神仙= = 大致分为三种情况 选某个人$i$,收益减少$a_{i}$ 选了$i$选了$j$,收益增加$2e_{ij}$ 选了$i$不选$j$,收益减少$e_{ij}$ ...

  5. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 9894  Solved: 4561 [Su ...

  6. 2038: [2009国家集训队]小Z的袜子(hose)+莫队入门

    题目链接:2038: [2009国家集训队]小Z的袜子(hose) 题目: Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再 ...

  7. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 分块

    分块大法好 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2938  Solved: 13 ...

  8. BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MB Submit: 19269 Solved: 8851 [Sub ...

  9. 莫队算法 BOJ 2038 [2009国家集训队]小Z的袜子(hose)

    题目传送门 1 /* 2 莫队算法:求出[l, r]上取出两只相同袜子的个数. 3 莫队算法是离线处理一类区间不修改查询类问题的算法.如果你知道了[L,R]的答案,可以在O(1)的时间下得到 4 [L ...

  10. 2038: [2009国家集训队]小Z的袜子(hose)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 15879  Solved: 7205 [S ...

最新文章

  1. C语言三路基数快排multikey quick sort算法(附完整源码)
  2. jvm对于java的意义_谈谈对JVM的理解
  3. Android插件化开发之动态加载三个关键问题详解
  4. 也许你需要点实用的-Web前端笔试题
  5. 【需求工程】需求管理
  6. 把exe里面的资源通通取出来
  7. php iis session 超时设置,如何配置IIS Session超时时间
  8. 拓展深度学习一种变相的马尔可夫链
  9. 关于数据型驱动自动化测试实现
  10. JSK-16501 扫雷游戏【谜题】
  11. IEEE802.5 令牌环网
  12. 小程序的优势和劣势是什么?
  13. python-2.找出数组中重复的数字
  14. VBA禁止更改工作表名称
  15. u深度做linux启动盘,u深度u盘启动盘制作教程
  16. 直播平台录播系统架构
  17. Java反射系列--Type接口及其子接口
  18. 算法之“鱼龙混杂”-3
  19. 怎么把pdf文件转换成jpg格式
  20. 经典好诗 词。。。。。

热门文章

  1. LINUX加载库时与WINDOWS有何不同
  2. 如果没有证据,判断一个事件的主谋的方法
  3. 安卓编解码的分辨率问题
  4. python之定义默认参数_035-Python之定义默认参数
  5. win10 桌面的的文件都不见了 提示不注销保存都文件都为临时_Windows10隐藏的8个小技巧,每一个都非常实用又高效...
  6. linux 7自定义服务,CentOS 7.x设置自定义开机启动,添加自定义系统服务
  7. mysql自带的全文索引_MySql全文索引详解
  8. matlab frontier,使用Matlab计算Efficient frontier
  9. 大学python考试会挂科吗_学姐含泪劝告:4个“最难学”的大学专业,考试“挂科”是常态...
  10. jar打包 剔除第三方依赖以及它的依赖_spring boot + gradle 打包 bootJar 瘦身分离 lib...