洛谷——P4014 分配问题
P4014 分配问题
题目描述
有 nn 件工作要分配给 nn 个人做。第 ii 个人做第 jj 件工作产生的效益为 c_{ij}cij 。试设计一个将 nn 件工作分配给 nn 个人做的分配方案,使产生的总效益最大。
输入输出格式
输入格式:
文件的第 11 行有 11 个正整数 nn,表示有 nn 件工作要分配给 nn 个人做。
接下来的 nn 行中,每行有 nn 个整数 c_{ij}cij,表示第 ii 个人做第 jj 件工作产生的效益为 c_{ij}cij。
输出格式:
两行分别输出最小总效益和最大总效益。
输入输出样例
说明
1 \leq n \leq 1001≤n≤100
一个人只能修一个工件
解题报告:
如何建图?
最小收益:建立一个超级源点S和超级汇点T,超级源点向每个工人连边,容量为1,费用为0,表示限制每个人只能有一种工作;
每个工人向每个工作连边,容量为1,费用为0,这样当这条边有流时 ,费用即为收益;
每个工作向超级汇点连边 ,容量为1,费用为0 ,表示限制每个工作只能被做一次;
跑完最大流后收益即为最小收益。
最大收益,即最大费用流 ,将原图中的边的费用全部取反 ,然后跑费用流 ,最后费用取反即可
我的代码自带大常数QWQ
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring> #define N 1010100
using namespace std; int n,m,S,T,head[N],tot;
struct node{
int to,next,flow,w;
}e[N]; int dis[N],flow[N],pre[N],last[N],cost;
bool vis[N]; queue<int>Q;
struct MCMFF{
void init(){
tot=-,cost=;
memset(head,-,sizeof(head));
memset(e,,sizeof(e));
}
void add(int u,int v,int flow,int w){
e[++tot].to=v,e[tot].next=head[u],head[u]=tot,e[tot].w=w,e[tot].flow=flow;
}
void Add(int u,int v,int flow,int w){
add(u,v,flow,w);
add(v,u,,-w);
}
bool spfa()
{
memset(vis,,sizeof(vis));
memset(dis,0x7f,sizeof(dis));
memset(flow,0x7f,sizeof(flow));
Q.push(S);vis[S]=,pre[T]=-,dis[S]=;
while(!Q.empty()){
int u=Q.front();Q.pop();
vis[u]=;
for(int i=head[u];i!=-;i=e[i].next){
int v=e[i].to;
if(e[i].flow>&&dis[v]>dis[u]+e[i].w){
dis[v]=dis[u]+e[i].w;
pre[v]=u,last[v]=i;
flow[v]=min(flow[v],e[i].flow);
if(!vis[v]){
Q.push(v);
vis[v]=;
}
}
}
}return pre[T]!=-;
}
void MCMF(){
while(spfa()){
int u=T;
cost+=flow[T]*dis[T];
while(u!=S){
e[last[u]].flow-=flow[T];
e[last[u]^].flow+=flow[T];
u=pre[u];
}
}
}
}netfl; int work[][]; int main()
{
scanf("%d",&n);
netfl.init();
S=,T=*n+;
for(int i=;i<=n;i++){
netfl.Add(S,i,,);
netfl.Add(i+n,T,,);
for(int j=;j<=n;j++){
scanf("%d",&work[i][j]);
netfl.Add(i,j+n,,work[i][j]);
}
}
netfl.MCMF();
printf("%d\n",cost);
netfl.init();
for(int i=;i<=n;i++){
netfl.Add(S,i,,);
netfl.Add(i+n,T,,);
for(int j=;j<=n;j++){
netfl.Add(i,j+n,,-*work[i][j]);
}
}
netfl.MCMF();
printf("%d\n",-*cost);
return ;
}
洛谷——P4014 分配问题的更多相关文章
- 洛谷P4014 分配问题【最小/大费用流】题解+AC代码
洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...
- 洛谷P4014分配问题——网络流24题
题目:https://www.luogu.org/problemnew/show/P4014 最大/小费用最大流裸题. 代码如下: #include<iostream> #include& ...
- 洛谷P4014 分配问题(费用流)
传送门 可以把原图看做一个二分图,人在左边,任务在右边,求一个带权的最大和最小完美匹配 然而我并不会二分图做法,所以只好直接用费用流套进去,求一个最小费用最大流和最大费用最大流即可 //minamot ...
- 洛谷 P4014 分配问题 【最小费用最大流+最大费用最大流】
其实KM更快--但是这道题不卡,所以用了简单粗暴的费用流,建图非常简单,s向所有人连流量为1费用为0的边来限制流量,所有工作向t连流量为1费用为0的边,然后对应的人和工作连(i,j,1,cij),跑一 ...
- 洛谷P4014 分配问题(费用流)
题目描述 有 nn 件工作要分配给 nn 个人做.第 ii 个人做第 jj 件工作产生的效益为 c_{ij}cij .试设计一个将 nn 件工作分配给 nn 个人做的分配方案,使产生的总效益最大. ...
- 洛谷 P4016负载平衡问题【费用流】题解+AC代码
洛谷 P4016负载平衡问题 P4014 分配问题[费用流]题解+AC代码 负载平衡问题 题目描述 GG 公司有n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n ...
- 洛谷P1402 酒店之王(网络流)
### 洛谷P1402 题目链接 ### 题目大意:有 n 个人, p 间房间,q 种食物.每个人喜欢一些房间,一些食物,但每间房间.每种食物只能分配给一个人.问最大可以让多少个人满足(当且仅当分配到 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
随机推荐
- JBoss AS 7之简单安装(The Return Of The King)
1.3 JBoss As 7安装 安装JBoss As 7分为以下几个步骤: 1. 下载JBoss 下载地址: <span style="font-size:18px;&quo ...
- Apache Kafka-0.8.1.1源代码编译
作者:过往记忆 | 新浪微博:左手牵右手TEL | 能够转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明博客地址:http://www.iteblog.com/文章标题:<Apac ...
- Android 完全退出应用程序
随着业务逻辑越来越复杂,退出应用程序也不像之前那个直接将Activity finish()掉就可以了,在网上看到很多完全退出App的文章,但是实践之后发现,并不像文章中描述的那样,不是方法过时了,就是 ...
- Linux ALSA声卡驱动之八:ASoC架构中的Platform
1. Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过C ...
- YTU 2723: 默认参数--求圆的面积
2723: 默认参数--求圆的面积 时间限制: 1 Sec 内存限制: 128 MB 提交: 206 解决: 150 题目描述 根据半径r求圆的面积, 如果不指定小数位数,输出结果默认保留两位小数 ...
- Timer A UP mode 中断
Timer_A, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK // Description: Toggle P1.0 using software and TA ...
- 8.3 TCPIP协议族
接下来我们要学习的内容是TCP/IP协议族.TCP/IP协议族在网络系统中是非常重要的.这一个协议族当中牵涉到许许多多的我们平常所用到的协议.TCP/IP呢它也有分层模型.然后我们讲到的就是三方面的内 ...
- 一个不错的jquery插件模版
pageplugin.js (function ($) { $.PagePlugin = function (obj, opt) { var options = $.extend({}, $.Page ...
- 洛谷P1613 跑路(最短路+倍增)
P1613 跑路 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的 ...
- $CF1141A Game 23$
这题很简单啊 可以用\(DFS\)来打 毕竟是 \(2^x*3^y=m 输出x+y啊\) 这是最简单的做法 #include <bits/stdc++.h> using namespace ...