题目描述 GG 公司有 nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入输出格式 输入格式: 文件的第 11 行中有 11 个正整数 nn ,表示有 nn 个仓库. 第 22 行中有 nn 个正整数,表示 nn 个仓库的库存量. 输出格式: 输出最少搬运量. 输入输出样例 输入样例#1: 复制 5 17 9 14 16 4 输出样例#1: 复制 11 说明 1 \leq n \leq…
洛谷 P4016负载平衡问题 P4014 分配问题[费用流]题解+AC代码 负载平衡问题 题目描述 GG 公司有n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式: 文件的第 11 行中有 11 个正整数 n,表示有 n 个仓库. 第 22 行中有 n 个正整数,表示 n 个仓库的库存量. 输出格式: 输出最少搬运量. 输入样例 5 17 9 14 16 4 输出样例 11 说明 1001…
P4016 负载平衡问题 题目描述 GG 公司有 nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 文件的第 11 行中有 11 个正整数 nn,表示有 nn 个仓库. 第 22 行中有 nn 个正整数,表示 nn 个仓库的库存量. 输出格式 输出最少搬运量. 输入输出样例 输入 #1复制 5 17 9 14 16 4 输出 #1复制 11 说明/提示 \(1<=n<=100\)…
传送门 嗯……完全不会……不过题解似乎讲的挺清楚…… 考虑一下,每一个仓库最终肯定都是平均数,所以数量大于平均数的可以往外运,小于平均数的要从别的地方运进来 考虑建一个超级源$S$和超级汇$T$,并把每一个值减去平均数.如果值大于0,则从$S$往它连边,流量为它的值,费用为$0$,表示可以从源点免费获得这么多流,也就相当于自身存储着这么多流.如果值小于$0$,那么把这个点向$T$连边,值为自己本身值的相反数,费用为$0$,表示可以免费流这么多给汇点,也就相当于自己需要这么多流.然后所有能互相传递…
求出平均数sum,对于大于sum的点连接(s,i,a[i]-sum,0),表示这个点可以流出多余的部分,对于小于sum的点连接(i,t,sum-a[i],0)表示这个点可以接受少的部分,然后每个点向相邻的两个点连(i,j,inf,1)表示可以任意转移,每转移一份产生1费用,注意这是个环所以首尾相连.然后跑最小费用最大流即可. #include<iostream> #include<cstdio> #include<queue> #include<cstring&g…
贪心做法 第一眼看见觉得和均分纸牌差不多,然而因为这是环形的,并不能用均分纸牌的方法做,但是均分纸牌的思想仍然适用 首先我们假设平均数为sum1. 那么对于第1个人,我们假设他给第N个人K个糖果, 第2个人给1 第3个人给2 第n个人给第n-1个人 那么对于第1个人给完n,第2个人给完1,第一个人不会再改变糖果数了 所以应该是sum1那么第一个人原来是a1 给n之后是a1-k,代价是k, 第2个人给1,使1的糖果数是sum1,所以应该给sum1-a1+k个,代价是 \(abs(sum1+k-a1…
bzoj1045 洛谷P4016 洛谷P2512 bzoj3293 洛谷P3156 题解:https://www.luogu.org/blog/LittleRewriter/solution-p2512 #include<cstdio> #include<algorithm> #include<cstring> #include<vector> using namespace std; #define fi first #define se second #…
原题链接 题意简述 模板题啦~ 题解 每次都以费用作为边权求一下最短路,然后沿着最短路增广. Code //[模板]最小费用最大流 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; inline char gc() { static char now[1<<16],*S,*T; if(S==T) {T=(S=now)+fread(now,1,1<…
题解 最小费用最大流 n和m是反着的 首先, \[ ans = \sum{cost[i][j]}*k \] 其中,\(k\)为它在当前技术人员那里,排倒数第\(k\)个修 我们可以对于每个技术人员进行拆点, 对于每个技术人员的各个点,表示倒数第几次修 然后每个人连向技术人员,显然花费是根据连的点来算的 然后就是二分图带权最小匹配了 我只会Dinic Code #include<bits/stdc++.h> #define LL long long #define RG register usi…
题目 负载平衡问题是一个比较经典的网络流问题,但是该问题还有一个数学贪心法. 所以做这个题前,其实可以做一下均分纸牌问题. 均分纸牌问题 均分纸牌问题可以说是作为贪心的入门题. 做法 首先我们应当把原先的数都减上所有数的平均值,这样原数组就转化为了原数组和平均数的差. 这个题的思想也很简单,转化完毕之后,因为可以移到左右两边的位置上所以不妨只考虑后一堆,因为前一堆已经处理好了,所以可以暴力解决.每次移都加一个次数.如果该数组为0,就直接跳过.直到所有数组都移完之后,统计总的次数并输出即可. \(…