【网络流24题】【LOJ6013】负载平衡(环形纸牌均分,最小费最大流)
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】负载平衡(环形纸牌均分,最小费最大流)相关推荐
- [网络流24题][CODEVS1916]负载平衡问题(费用流)
题目描述 传送门 题解 首先拆点,分XiYi,对应每个仓库. 从源点向Xi连边,容量为ri,费用为0: 从Yi向汇点连边,容量为xba,费用为0: 从Xi向对应的Yi连边,容量为INF,费用为0: 从 ...
- 解题报告:线性规划与网络流24题
目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...
- 「网络流24题」 题目列表
「网络流24题」 题目列表 序号 题目标题 模型 题解 1 飞行员配对方案问题 二分图最大匹配 <1> 2 太空飞行计划问题 最大权闭合子图 <2> 3 最小路径覆盖问题 二分 ...
- 【算法】【网络流24题】巨坑待填(成功TJ,有时间再填)
------------------------------------------------------------------------------------ 17/24 --------- ...
- 【题解】网络流24题一句话题解集合
最近写了下<线性规划与网络流24题>,发下代码和题解,事实上就是将交给cycycy的题解复制一下 T1 飞行员配对方案问题 solution 裸的匈牙利 code #include< ...
- cwl的网络流24题练习
网络流24题 编号 题目 备注 1 飞行员配对方案问题 二分图最大匹配,可最大流解决 2 太空飞行计划问题 3 最小路径覆盖问题 有向图最小路径覆盖,解法都写题目上了 4 魔术球问题 有向图最 ...
- 「网络流24题」 12. 软件补丁问题
「网络流24题」 12. 软件补丁问题 状压 DP,SPFA 转移. 没错,跟网络流没任何关系. b1.b2.f1.f2 都用二进制存下来,第 i 位表示是否有这个错误. 然后从每位都是 1 到 0 ...
- loj #6226. 「网络流 24 题」骑士共存问题
#6226. 「网络流 24 题」骑士共存问题 题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些 ...
- 【线性规划与网络流24题】孤岛营救问题 分层图
孤岛营救问题 Time Limit: 1 Sec Memory Limit: 128 MB Description 1944年,特种兵麦克接到国防部的命令.要求马上赶赴太平洋上的一个孤岛,营救被敌军 ...
- Cogs 727. [网络流24题] 太空飞行计划(最大权闭合子图)
[网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W 教授正在为国家航天中心计 ...
最新文章
- Linux socket TIME_WAIT 优化
- oracle 2日dba 11g,Oracle 11gR2 注意revoke dba 会一并回收通过”quota“分配的表空间限额...
- 解决svn working copy locked问题
- java z注释过滤_如何编写一个java程序来过滤所有注释行并只打印java编码行?
- 中断处理函数中自旋锁的应用
- 全球及中国管道运输行业建设发展与投资战略规划报告2022版
- @EnableTransactionManagement原理
- java rest框架_比较Java REST文档框架
- Android 读写SDcard (转)
- Linux Service管理
- linux镜像文件太大不好下载_Rufus下载_Rufus官方下载[U盘工具]
- mysql gitd 数据结构同步失败_MySQL案例-GTID同步失败:master has purged binary logs
- 基于深度学习的知识追踪研究进展 Research Advances in the Knowledge Tracing Based on Deep Learning
- C语言实现循环左移和右移
- android隐藏关闭软键盘
- com.netflix.discovery.DiscoveryClient : Completed shut down of DiscoveryClient
- K8S—pv和pvs
- Java学习者看过来。。。这些优质项目千万别错过
- 如何产生创业想法(3 个框架)
- echarts如何引入市级地图
热门文章
- 形式的化简与和式的展开
- 物理学基石 —— 波、电磁波、微波
- 中英文对照 —— 计算机编程
- Spark 基础 —— Map 容器
- 代码健壮性 —— 异常保护和合法性检测
- 如何通过父类引用“调用”子类所独有的方法
- mysql 主备监控_mysql 主从备份监控slave状态nagios脚本
- python安装目录结构_1.5 python安装目录介绍《Python基础开发入门到精通》
- 专科python应届生工资多少-应届毕业生自述面试15K月薪的Python后端开发经历,希望对你有用...
- python下载-python下载及安装