loj #6013. 「网络流 24 题」负载平衡
#6013. 「网络流 24 题」负载平衡
题目描述
G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 n nn 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。
输入格式
文件的第 1 11 行中有 1 11 个正整数 n nn,表示有 n nn 个仓库。
第 2 22 行中有 n nn 个正整数,表示 n nn 个仓库的库存量。
输出格式
输出最少搬运量。
样例
样例输入
5
17 9 14 16 4
样例输出
11
数据范围与提示
1≤n≤100 1 \leq n \leq 1001≤n≤100
思路:首先求出平均数,因为物资流动的最终结果是每个仓库的货物数目相同,就是每个仓库货物数目达到平均数。
然后环形仓库可以向两边搬运,所以固定一个方向,就是a[i] - >a[i+1]吧,并记录搬运数量为c[i]。所以c[i]就表示货物由第i个仓库搬到第i+1仓库的数量,负数表示i+1仓库往第i个仓库搬货。然后根据a[i]+c[i]-c[i-1]==m,可以求出每个仓库的货物搬动数量。
接下来就是处理搬运货物的总量最小,就是∑|c[i]| (i=0…n-1)最小。拿回原题意语境中我们可以知道c[i] (i=0,1,2…n-1)是相互影响的,但是它们的相对大小不会改变,所以我们现在可以把问题转化为一个数学题,就是把c[i]固定在一个数轴上,然后确定一个原点,保证绝对值之和最小即可。
然后就可以发现将原点固定在c[0]-c[n]最中间的位置(物理位置中间,就是原点左右两边数目尽可能相同)时绝对值之和时最小的。因为c[i] (i=0,1,2…)是相互影响的,又因相对大小不会改变,所以我们可以把c[0]随便赋一个值,然后就可以把c[i]的相对值都求出来了。
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 110
using namespace std;
int a[maxn],c[maxn],n,m;
int main(){
long long sum=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
m=sum/n;
c[]=;
for(int i=;i<=n;i++)c[i]=c[i-]+a[i]-m;
sort(c+,c+n+);
int mn=;
for(int i=,j=n;i<j;i++,j--)mn+=c[j]-c[i];
printf("%d",mn);
return ;
}
loj #6013. 「网络流 24 题」负载平衡的更多相关文章
- 2018.10.15 loj#6013. 「网络流 24 题」负载平衡(费用流)
传送门 费用流sb题. 直接从sss向每个点连边,容量为现有物品量. 然后从ttt向每个点连边,容量为最后库存量. 由于两个点之间可以互相任意运送物品,因此相邻的直接连infinfinf的边就行了. ...
- 【刷题】LOJ 6013 「网络流 24 题」负载平衡
题目描述 G 公司有 \(n\) 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 \(n\) 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 ...
- Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流)
Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流) Description G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使n ...
- LibreOJ #6013. 「网络流 24 题」负载平衡 最小费用最大流 供应平衡问题
#6013. 「网络流 24 题」负载平衡 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- Luogu P4016 「 网络流 24 题 」负载平衡问题
吐槽题目难度,这个题建模好像比前两个都要难,但是难度评级却比第二个要低. 解题思路 依旧是考虑如何建模和建立源点汇点.每个点的货物数量到最后都一样的话肯定是等于他们的平均值.用 $num$ 数组存储原 ...
- 【刷题】LOJ 6227 「网络流 24 题」最长k可重线段集问题
题目描述 给定平面 \(\text{xoy}\) 上 \(n\) 个开线段组成的集合 \(\text{I}\) ,和一个正整数 \(k\) ,试设计一个算法. 从开线段集合 \(\text{I}\) ...
- [luogu_P1251][LOJ#6008]「网络流 24 题」餐巾计划
[luogu_P1251][LOJ#6008]「网络流 24 题」餐巾计划 试题描述 一个餐厅在相继的 \(N\) 天里,第 \(i\) 天需要 \(R_i\) 块餐巾 \((i=l,2,-,N)\) ...
- [LOJ#6002]「网络流 24 题」最小路径覆盖
[LOJ#6002]「网络流 24 题」最小路径覆盖 试题描述 给定有向图 G=(V,E).设 P 是 G 的一个简单路(顶点不相交)的集合.如果 V 中每个顶点恰好在 P 的一条路上,则称 P 是 ...
- loj #6014. 「网络流 24 题」最长 k 可重区间集
#6014. 「网络流 24 题」最长 k 可重区间集 题目描述 给定实直线 L LL 上 n nn 个开区间组成的集合 I II,和一个正整数 k kk,试设计一个算法,从开区间集合 I II 中选 ...
随机推荐
- burpsuite扫描web目录
1.进行抓包 2.将其发送到lntruder 3.使用替换脚本替换掉/ 4.替换 5.替换结果 6.将多余的$$删除,在/后面添加$$ //$$就是payload 7.测试结果 替换脚本代码: ...
- List去重与排序
最简单的方法:利用Where一句话去重 pointLst = pointLst.Where((x, i) => pointLst.FindIndex(z => z.POINT_ID == ...
- eclipse生成的web项目在resin服务器上的发布(不能解析web.xml)
首先报错误: web项目web.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <web-ap ...
- 用Eclipse Memory Analyzer查找内存泄露
写在CSDN里面了 http://blog.csdn.net/dayulxl/article/details/78164301
- C++——STL之vector, list, deque容器对比与常用函数
STL 三种顺序容器的特性对比: vector 可变数组,内存空间是连续的,容量不会进行缩减.支持高效随机存取,即支持[]和at()操作.尾部插入删除效率高,其他位置插删效率较低: list 双向链表 ...
- win10 Kinect2 Visualstudio2015 opencv3环境搭建
1.下载kinect SDK ( Kinect for Windows SDK 2.0 ): https://www.microsoft.com/en-us/download/details.asp ...
- Mock Server实践
转载自 https://tech.meituan.com/mock-server-in-action.html 背景 在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过R ...
- suse10配置SSH无密码登录的方法
RSH配置(集群中的每台机器执行以下操作) 1.因SUSE LINUX不自带RSH-SERVER服务,所以首先要去从www.rpmfind.net 下载rsh-server服务的RPM包. 然后切换到 ...
- 1.scala基础语法总结
Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...
- EF 常见语句以及sql语句简单 后续继续添加
1.注意级联删除的时候数据库的外键要设置为开启级联删除,(数据库里sqlserver的外键修改的时候,可以看到级联删除和级联更新) using System;using System.Collecti ...