problem

  • 一个有n个数的环
  • 每次只能向相邻的数移动,移动一个数代价为1
  • 求让所有数相等的最小代价

solution

  • 从s向每个点连容量为库存量,费用为0的边
  • 从每个点向t连容量为平均库存量,费用为0的边
  • 在相邻两个点之间连容量为inf,费用为1的边
  • 然后跑最小费用最大流即可

codes

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;const int N = 110*2+10, M = 1000+10, inf = 1<<30;//Grape
struct Edge{int from, to, cap, flow, cost;
}e[M];
int tot=1, head[N], Next[M];
void AddEdge(int u, int v, int w, int c){//正向边,初始容量w,单位费用ce[++tot].from = u, e[tot].to = v, e[tot].cap = w, e[tot].flow = 0, e[tot].cost = c;Next[tot] = head[u], head[u] = tot;//反向边,初始容量0,单位费用-c,与正向边成对存储e[++tot].from = v, e[tot].to = u, e[tot].cap = 0, e[tot].flow = 0, e[tot].cost = -c;Next[tot] = head[v], head[v] = tot;
}//Cost flow
int s, t, incf[N], pre[N];
int dist[N], vis[N];
bool spfa(){queue<int>q;memset(dist,0x3f,sizeof(dist));//infmemset(vis,0,sizeof(vis));q.push(s); dist[s]=0; vis[s]=1;incf[s] = inf; //到s为止的增广路上各边的最小的剩余容量while(q.size()){int x = q.front(); q.pop(); vis[x] = 0;for(int i = head[x]; i; i = Next[i]){if(e[i].flow==e[i].cap)continue; //剩余容量为0,不再残量网络中,不遍历int y = e[i].to;if(dist[y]>dist[x]+e[i].cost){dist[y] = dist[x]+e[i].cost;incf[y] = min(incf[x], e[i].cap-e[i].flow);pre[y] = i;//记录前驱,用于找方案if(!vis[y])vis[y]=1, q.push(y);}}}if(dist[t] == 0x3f3f3f3f)return false;//汇点不可达,已求出最大流return true;
}
int maxflow(){int flow = 0, cost = 0;while(spfa()){int x = t;while(x != s){int i = pre[x];e[i].flow += incf[t];e[i^1].flow -= incf[t];x = e[i].from;}flow += incf[t];cost += dist[t]*incf[t];}return cost;
}//Timu
int n, a[110], sum, ans;int main(){ios::sync_with_stdio(false);cin>>n; for(int i = 1; i <= n; i++)cin>>a[i],sum+=a[i];  sum/=n;s = 0, t = n+1;for(int i = 1; i <= n; i++){AddEdge(s,i,a[i],0);AddEdge(i,t,sum,0);AddEdge(i,i+1>n?1:i+1,inf,1);AddEdge(i,i-1<1?n:i-1,inf,1);}cout<<maxflow()<<'\n';return 0;
}

【网络流24题】【LOJ6013】负载平衡(环形纸牌均分,最小费最大流)相关推荐

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

    题目描述 传送门 题解 首先拆点,分XiYi,对应每个仓库. 从源点向Xi连边,容量为ri,费用为0: 从Yi向汇点连边,容量为xba,费用为0: 从Xi向对应的Yi连边,容量为INF,费用为0: 从 ...

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

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

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

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

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

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

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

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

  6. cwl的网络流24题练习

    网络流24题 编号 题目 备注 1 飞行员配对方案问题 二分图最大匹配,可最大流解决 2 太空飞行计划问题   3 最小路径覆盖问题  有向图最小路径覆盖,解法都写题目上了 4 魔术球问题  有向图最 ...

  7. 「网络流24题」 12. 软件补丁问题

    「网络流24题」 12. 软件补丁问题 状压 DP,SPFA 转移. 没错,跟网络流没任何关系. b1.b2.f1.f2 都用二进制存下来,第 i 位表示是否有这个错误. 然后从每位都是 1 到 0 ...

  8. loj #6226. 「网络流 24 题」骑士共存问题

    #6226. 「网络流 24 题」骑士共存问题 题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些 ...

  9. 【线性规划与网络流24题】孤岛营救问题 分层图

    孤岛营救问题 Time Limit: 1 Sec  Memory Limit: 128 MB Description 1944年,特种兵麦克接到国防部的命令.要求马上赶赴太平洋上的一个孤岛,营救被敌军 ...

  10. Cogs 727. [网络流24题] 太空飞行计划(最大权闭合子图)

    [网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W 教授正在为国家航天中心计 ...

最新文章

  1. Linux socket TIME_WAIT 优化
  2. oracle 2日dba 11g,Oracle 11gR2 注意revoke dba 会一并回收通过”quota“分配的表空间限额...
  3. 解决svn working copy locked问题
  4. java z注释过滤_如何编写一个java程序来过滤所有注释行并只打印java编码行?
  5. 中断处理函数中自旋锁的应用
  6. 全球及中国管道运输行业建设发展与投资战略规划报告2022版
  7. @EnableTransactionManagement原理
  8. java rest框架_比较Java REST文档框架
  9. Android 读写SDcard (转)
  10. Linux Service管理
  11. linux镜像文件太大不好下载_Rufus下载_Rufus官方下载[U盘工具]
  12. mysql gitd 数据结构同步失败_MySQL案例-GTID同步失败:master has purged binary logs
  13. 基于深度学习的知识追踪研究进展 Research Advances in the Knowledge Tracing Based on Deep Learning
  14. C语言实现循环左移和右移
  15. android隐藏关闭软键盘
  16. com.netflix.discovery.DiscoveryClient : Completed shut down of DiscoveryClient
  17. K8S—pv和pvs
  18. Java学习者看过来。。。这些优质项目千万别错过
  19. 如何产生创业想法(3 个框架)
  20. echarts如何引入市级地图

热门文章

  1. 形式的化简与和式的展开
  2. 物理学基石 —— 波、电磁波、微波
  3. 中英文对照 —— 计算机编程
  4. Spark 基础 —— Map 容器
  5. 代码健壮性 —— 异常保护和合法性检测
  6. 如何通过父类引用“调用”子类所独有的方法
  7. mysql 主备监控_mysql 主从备份监控slave状态nagios脚本
  8. python安装目录结构_1.5 python安装目录介绍《Python基础开发入门到精通》
  9. 专科python应届生工资多少-应届毕业生自述面试15K月薪的Python后端开发经历,希望对你有用...
  10. python下载-python下载及安装