题目描述

传送门

题解

首先拆点,分XiYi,对应每个仓库。
从源点向Xi连边,容量为ri,费用为0;
从Yi向汇点连边,容量为xba,费用为0;
从Xi向对应的Yi连边,容量为INF,费用为0;
从Yi向环形相邻的Xi连边,容量为INF,费用为1;
用费用流求解即可。图中不会出现环。

刚开始的思路有问题。只是把Xi向相邻的Yi连边了。由于货物在仓库之间可以被运输多次,这样的建图方法是不科学的。

代码

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;const int max_n=105;
const int max_N=max_n*2+2;
const int max_m=max_n*10;
const int max_e=max_m*2;
const int INF=1e9;int n,N,sum,xba,ans,maxflow,mincost;
int a[max_n],near[max_n];
int tot,point[max_N],next[max_e],v[max_e],remain[max_e],c[max_e];
int dis[max_N],last[max_N];
bool vis[max_N];
queue <int> q;inline void addedge(int x,int y,int cap,int z){++tot; next[tot]=point[x]; point[x]=tot; v[tot]=y; remain[tot]=cap; c[tot]=z;++tot; next[tot]=point[y]; point[y]=tot; v[tot]=x; remain[tot]=0; c[tot]=-z;
}inline int addflow(int s,int t){int ans=INF,now=t;while (now!=s){ans=min(ans,remain[last[now]]);now=v[last[now]^1];}now=t;while (now!=s){remain[last[now]]-=ans;remain[last[now]^1]+=ans;now=v[last[now]^1];}return ans;
}inline bool bfs(int s,int t){memset(dis,0x7f,sizeof(dis));dis[s]=0;memset(vis,0,sizeof(vis));vis[s]=true;while (!q.empty()) q.pop();q.push(s);while (!q.empty()){int now=q.front(); q.pop();vis[now]=false;for (int i=point[now];i!=-1;i=next[i])if (dis[v[i]]>dis[now]+c[i]&&remain[i]){dis[v[i]]=dis[now]+c[i];last[v[i]]=i;if (!vis[v[i]]){vis[v[i]]=true;q.push(v[i]);}}}if (dis[t]>INF) return false;int flow=addflow(s,t);mincost+=flow*dis[t];return true;
}inline void major(int s,int t){mincost=0;while (bfs(s,t));
}int main(){tot=-1;memset(point,-1,sizeof(point));memset(next,-1,sizeof(next));scanf("%d",&n);N=n*2+2;for (int i=1;i<=n;++i)scanf("%d",&a[i]),sum+=a[i];xba=sum/n;for (int i=1;i<=n;++i)near[i]=i;near[0]=n; near[n+1]=1;for (int i=1;i<=n;++i){addedge(1+n+i,1+near[i-1],INF,1);addedge(1+n+i,1+near[i+1],INF,1);addedge(1+i,1+n+i,INF,0);}for (int i=1;i<=n;++i){addedge(1,1+i,a[i],0);addedge(1+n+i,N,xba,0);}major(1,N);printf("%d\n",mincost);
}

总结

①写spfa不要忘记出队。

[网络流24题][CODEVS1916]负载平衡问题(费用流)相关推荐

  1. 【网络流24题】圆桌聚餐(最大流)

    [网络流24题]圆桌聚餐(最大流) 题面 Cogs 题解 这道题很简单 首先每个单位的人数限制 直接从源点向单位连边,容量为人数 同样的, 每个桌子向汇点连边,容量为可以坐的人数 因为每个桌子只能够做 ...

  2. [网络流24题] 负载平衡问题 (费用流)

    洛谷传送门 LOJ传送门 本题解思路来自hzwer黄学长 搬运后每个位置应该有的货物数量$num=\frac{\sum a_{i}}{n}$ 那么大于$num$的位置都应该把一部分货物提供给其他位置, ...

  3. 【网络流24题】搭配飞行员(最大流+二分图匹配)

    传送门 搭配飞行员     题意:二分图匹配裸题,不多说 I think Dinic算法跑最大流解决||匈牙利算法 Code 代码一:Dinic #include<cstdio> #inc ...

  4. 【网络流24题】圆桌聚餐 (最大流)

    题意 假设有来自 nn n 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 riri r_i ​​.会议餐厅共有 mm m 张餐桌,每张餐桌可容纳 cici c_i​​ 个代表就餐. 为了使 ...

  5. 【网络流24题】餐巾计划问题(最小费用最大流)

    [网络流24题]餐巾计划问题(最小费用最大流) 题面 COGS 洛谷上的数据范围更大,而且要开longlong 题解 餐巾的来源分为两种: ①新买的 ②旧的拿去洗 所以,两种情况分别建图 先考虑第一种 ...

  6. 解题报告:线性规划与网络流24题

    目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...

  7. 「网络流24题」 题目列表

    「网络流24题」 题目列表 序号 题目标题 模型 题解 1 飞行员配对方案问题 二分图最大匹配 <1> 2 太空飞行计划问题 最大权闭合子图 <2> 3 最小路径覆盖问题 二分 ...

  8. 【算法】【网络流24题】巨坑待填(成功TJ,有时间再填)

    ------------------------------------------------------------------------------------ 17/24 --------- ...

  9. 【题解】网络流24题一句话题解集合

    最近写了下<线性规划与网络流24题>,发下代码和题解,事实上就是将交给cycycy的题解复制一下 T1 飞行员配对方案问题 solution 裸的匈牙利 code #include< ...

最新文章

  1. 汇编和python-PyAsm-在python中嵌入汇编 | 学步园
  2. 【原】让H5页面适配移动设备全家 - 设计师篇 - PPT
  3. Re:从 0 开始的微服务架构--(三)微服务架构 API 的开发与治理--转
  4. SignalTap II逻辑分析仪的使用
  5. 构建和实现单点登录解决方案(转载于IBMdeveloperWorks)
  6. 【ArcGIS微课1000例】0006:创建随机点(Create Random Points)
  7. linux安装mysql 5.6.33
  8. 【文章】人的好运从哪里来?
  9. 解决在全文搜索中搜索中文字符
  10. Silverlight学习之贪吃蛇游戏
  11. 用面向对象思想设计奥赛罗游戏
  12. 聊一聊Cookie(结合自己的学习方法分享一篇维基百科和一篇segmentfault(思否)好文)...
  13. 中标麒麟Linux能运行wine吗,中标麒麟V6下wine完美运行通达信
  14. 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写
  15. Kanzi学习之路(4):Kanzi的属性系统
  16. DeepLab InvalidArgumentError NodeDef mentions attr dilations not in Op name=Conv2D
  17. 关于STM32空闲中断极限时间
  18. 基于Springboot+vue实现前后端分离二手图书交易
  19. Part-Ⅰ3. 稳态等效电路建模/损耗/效率(三)
  20. Android 在xml中更改纯色图片颜色

热门文章

  1. html导出 word文档教程
  2. 网景软件测试大乐,软件测试综合题(附答案)-上.doc
  3. STM32STM8系列MCU产品命名
  4. WinRTC中的简单音频混频器代码
  5. CoOS使用教程——消息邮箱
  6. 【OptiX】第2个示例 添加实时计算几何体以及计算法线等属性
  7. BSV区块链应用创新汇(深圳站)视频精彩回顾,欢迎观赏
  8. 区块链结合物联网会碰撞出怎样的火花?
  9. 1028. 人口普查
  10. 怎么进行固态硬盘对拷?看看这里