正题

题目链接:https://www.luogu.com.cn/problem/P1791


题目大意

有nnn个人,雇佣第iii个需要AiA_iAi​的费用,对于Ei,jE_{i,j}Ei,j​表示如果iii选了的话,选择jjj会获得Ei,jE_{i,j}Ei,j​的费用,不选jjj会花费Ei,jE_{i,j}Ei,j​的费用。

1≤n≤10001\leq n\leq 10001≤n≤1000


解题思路

考虑网最大权值闭合图,先加上所有可以获得的权值,然后考虑需要失去的最小权值。

因为每个人可以选或者不选,那么就可以让sss连接iii且iii连接ttt这样两边必须割掉一条表示选择或者不选择。

考虑让s−>is->is−>i表示选择,那么s−>is->is−>i权值为AiA_iAi​。

i−>ti->ti−>t表示不选择那么所有由iii产生的费用都不能获得,权值为∑j=1mEi,j\sum_{j=1}^mE_{i,j}∑j=1m​Ei,j​。

然后对于一个Ei,jE_{i,j}Ei,j​如果iii选择了且jjj没有选择那么就会失去2×Ei,j2\times E_{i,j}2×Ei,j​的流量,在iii和jjj之间连一条2×Ei,j2\times E_{i,j}2×Ei,j​的就好了。


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const ll N=2e4+10,inf=2147483647;
struct node{ll to,next,w;
}a[N*4];
ll n,s,t,tot,cnt,A[N],ls[N],dep[N],ans;
queue<int> q;
void addl(ll x,ll y,ll w){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;a[++tot].to=x;a[tot].next=ls[y];ls[y]=tot;a[tot].w=0;return;
}
bool bfs(){memset(dep,0,sizeof(dep));dep[s]=1;while(!q.empty())q.pop();q.push(s);while(!q.empty()){ll x=q.front();q.pop();for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(dep[y]||!a[i].w)continue;dep[y]=dep[x]+1;if(y==t)return 1;q.push(y);}}return 0;
}
ll dinic(ll x,ll flow){if(x==t)return flow;ll rest=0,k;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(dep[y]!=dep[x]+1||!a[i].w)continue;rest+=(k=dinic(y,min(a[i].w,flow-rest)));a[i].w-=k;a[i^1].w+=k;if(rest==flow)return flow;}if(!rest)dep[x]=0;return rest;
}
signed main()
{scanf("%lld",&n);s=n+1;t=s+1;tot=1;for(ll i=1;i<=n;i++){ll x;scanf("%lld",&x);addl(s,i,x);}for(ll i=1;i<=n;i++){ll S=0;for(ll j=1;j<=n;j++){ll x;scanf("%lld",&x);if(!x)continue;S+=x;addl(i,j,2*x);}addl(i,t,S);ans+=S;}while(bfs())ans-=dinic(s,inf);printf("%lld\n",ans);return 0;
}

P1791-[国家集训队]人员雇佣【最大权闭合图】相关推荐

  1. 最大权闭合 图 讲解

    详见  国家集训队 论文 2007  胡伯涛 <最小割模型在信息学竞赛中的应用> 首先说几个我看时疑惑的问题   1:为什么 割里面的点集就是闭合 图 ? 答:由于 我们见图时,将原图的 ...

  2. noi 2006 最大收益 最大权闭合图转最小割转最大流

    题意:一个公司有n个可以建造通讯战的地方,建造成本分别为pi,然后第i个公司会选择使用通讯站ai与bi,使用费用是ci,然后问这个通讯公司怎么建站能够获利最大.(净获利=总收益-总成本): 网上看到一 ...

  3. POJ 2987 Firing(最大权闭合图)

    [题目链接] http://poj.org/problem?id=2987 [题目大意] 为了使得公司效率最高,因此需要进行裁员, 裁去不同的人员有不同的效率提升效果,当然也有可能是负的效果, 如果裁 ...

  4. YBTOJ:矛盾指数(网络流-最大权闭合图)

    文章目录 题目描述 解析 代码 网络流要大胆建图 题目描述 公司内部共nnn个员工,员工之间可能有矛盾.若员工uuu和员工vvv有矛盾,用边(u,v)(u,v)(u,v)表示,共mmm个矛盾. 现在公 ...

  5. LibreOJ #6001. 「网络流 24 题」太空飞行计划 最大权闭合图

    #6001. 「网络流 24 题」太空飞行计划 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测 ...

  6. luogu P2762 太空飞行计划问题(最大权闭合图)

    luogu P2762 太空飞行计划问题(最大权闭合图) 题目大意 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={ ...

  7. 太空飞行计划LibreOJ - 6001(网络流24题)(最大权闭合图)

    题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合  ,和进行这些实验需要使用的全部仪器的集合 .实验  需要用到 ...

  8. 二、太空飞行计划问题 [最大权闭合图]

    太空飞行计划问题 问题描述: W教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,-,Em},和进行这些实验需 ...

  9. 线性规划与网络流24题 2太空飞行计划问题 最大权闭合图问题(不懂) nefu 476

    太空飞行计划问题 Time Limit 1000ms Memory Limit 65536K description W教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而 ...

  10. ★ 太空飞行计划 最大权闭合图+输出方案

    太空飞行计划 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个 ...

最新文章

  1. Python的串口操作库pyserial
  2. POJ 3982 序列 塔尔苏斯问题解决
  3. 广度优先搜索_深度优先搜索和广度优先搜索[09]
  4. 算法与数据结构(快速排序)
  5. Prim和Dijkstra居然写起来一模一样
  6. timeshift备份你的Linux系统
  7. python 支持什么操作系统_操作系统1:什么是操作系统?
  8. 学点 C 语言(32): 函数 - 返回值
  9. 小黑小波比.coding的使用
  10. ISCC2021-WP合集
  11. 冰点还原精灵和惠普增霸卡安装软件的方法
  12. flash Android 11.5,增强稳定性 Flash Player 11.5已发布
  13. 无人机探测雷达软硬件解决方案
  14. win10+ubuntu配置双系统
  15. 「武汉理工大学 软件工程复习」第三章 | 软件需求
  16. 天地图API搜索。定位等
  17. 按摩店用的收银系统多少钱一套
  18. 移动应用广告之商业变现的实现策略
  19. OSG-简单模型控制
  20. 学习,只有勤奋是不够的……

热门文章

  1. linux检查系统硬件信息命令,Linux查看系统信息(硬件信息, 系统设置信息等) 命令 | Soo Smart!...
  2. python第k序列元素查找_Python寻找第k小的元素
  3. php父子遍历,php无限分类父子追溯方法
  4. java连接mysql数据库连接池_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...
  5. linux获取tomcat进程,Shell 获取Tomcat进程号
  6. java实现权限_Java实现常用权限控制算法
  7. android 弹窗有边框_Android 多种简单的弹出框样式设置代码
  8. 蓝桥杯-长草-代码(BFS)
  9. leetcode530. 二叉搜索树的最小绝对差
  10. java 视频监控 分屏ui_视频监控网页ActiveX视频分屏播放控件开发