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 中选 ...
随机推荐
- 虚拟机在 OpenStack 里没有共享存储条件下的在线迁移
虚拟机在 OpenStack 里没有共享存储条件下的在线迁移 本文尝试回答与 Live migration 相关的几个问题:Live migration 是什么?为什么要做 Live migratio ...
- springboot成神之——springboot入门使用
springboot创建webservice访问mysql(使用maven) 安装 起步 spring常用命令 spring常见注释 springboot入门级使用 配置你的pom.xml文件 配置文 ...
- Python可执行对象——exec、eval、compile
Python提供的调用可执行对象的内建函数进行说明,涉及exec.eval.compile三个函数.exec语句用来执行存储在代码对象.字符串.文件中的Python语句,eval语句用来计算存储在代码 ...
- Halcon学习之文本操作
1. 新建文本文件open_file ( : : FileName, FileType : FileHandle ) 创建 ( 'output' or 'append' )或者打开 ...
- Swagger SpringBoot 集成
说明:Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集 ...
- webapi的几种过滤器
好久没有写博客了 今天就来聊聊asp.net webapi的过滤器们 过滤器主要有这么几种 AuthorizationFilterAttribute 权限验证 ActionFilterAttribut ...
- 季逸超:90后IT少年的“盖茨梦”
2月15日,"90后"独立开发者季逸超在其微博称,个人获得徐小平和红杉资本投资,成立了Peak Labs--以贝尔和施乐为目标的实验室. 谁是季逸超?他现年20岁,曾单独一人做出猛 ...
- java Web jsp嵌入代码的三种方式
1,表达式标签 <%= 2+3%> 唯一有显示功能的标签 作用: 计算表达式的返回值 将表达式的返回值显示到网页中. 注意: 表达式中不能有分号 2,普通脚本标签 <% %> ...
- mongo_2 $in 和 $all 区别
in 只需满足( )内的某一个值即可, 而$all 必须满足[ ]内的所有值, > db.table1.find({}); { "_id" : ObjectId(" ...
- poj1722 SUBTRACT
应该是基础的dp练手题 线性dp最主要的就是关于阶段的划分,这个题中我没想到的一点就是开状态的时候使用了前i个数能合成的数来记录 我自己的想法就是类似于区间dp这样的记录方法,这种方法确实开了很多冗余 ...