[网络流 24 题] luoguP4016 负载平衡问题
题目描述
有成环状的 nnn 堆纸牌,现将一张纸牌移动到其邻堆称为一次操作。求使得所有堆纸牌数相等的最少移动次数。
Solution 4016\text{Solution 4016}Solution 4016
细心的同学已经发现,为什么lz要用纸牌类比呢。
肯定与 均分纸牌 有关嘛。
链状的情况我们已经会了,但是这题是环状的,那该怎么办呢?
今有以下结论:
在本题中,不存在一个最优解,使得所有相邻的牌堆都有移动。
lz在此给出感性的不严谨的证明:
若存在一个最优解,满足所有牌堆都与相邻牌堆有移动。设它们移动的最少牌数为 aaa。
易知,将所有的移动数量都减去 aaa 以后得到的状态也是合法的。
所以,最优解一定有 a=0a=0a=0,
即:一定存在两相邻牌堆,它们之间没有纸牌移动。Q.E.D..\text{Q.E.D..}Q.E.D..
了解以后,我们就可以枚举断电,尝试破环成链,对于每条链跑均分纸牌,结果取最小值即可。
贴上lz无比丑陋的整合版的代码。
#include <bits/stdc++.h>
#define min(x,y) ((x)<(y)?(x):(y))
#define reg register
//#define abs(x) ((x)>0?x:(-x))
int n, c = 0;
int a[110],b[110];
int ans = 0;
int ave = 0x3f3f3f3f;
void work(){
int t=b[1];
for(reg int i=1;i<n;++i)
b[i]=b[i+1];
b[n]=t;
}
int calc(){
ans=0;
for(reg int i=1;i<=n;++i)
a[i]=b[i];
for (int i = 1; i < n; i++){
if(a[i]==c) continue;
if(a[i]<c){
a[i+1]-=c-a[i];
ans+=c-a[i];
a[i]=c;
}
else{
ans+=a[i]-c;
a[i+1]+=a[i]-c;
a[i]=c;
}
}
return ans;
}
int main()
{
scanf ("%d", &n);
for(reg int i=1;i<=n;++i)
scanf("%d",&b[i]);
for (int i = 1; i <= n; i++)
c += b[i];
c /= n;
for(reg int i=1;i<=n;++i){
work();
ave=min(ave,calc());
}
printf("%d",ave);
}
[网络流 24 题] luoguP4016 负载平衡问题的更多相关文章
- Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流)
Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流) Description G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使n ...
- LibreOJ #6013. 「网络流 24 题」负载平衡 最小费用最大流 供应平衡问题
#6013. 「网络流 24 题」负载平衡 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- loj #6013. 「网络流 24 题」负载平衡
#6013. 「网络流 24 题」负载平衡 题目描述 G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n nn 个仓库的库存数量相同.搬运货物时 ...
- 2018.10.15 loj#6013. 「网络流 24 题」负载平衡(费用流)
传送门 费用流sb题. 直接从sss向每个点连边,容量为现有物品量. 然后从ttt向每个点连边,容量为最后库存量. 由于两个点之间可以互相任意运送物品,因此相邻的直接连infinfinf的边就行了. ...
- Luogu P4016 「 网络流 24 题 」负载平衡问题
吐槽题目难度,这个题建模好像比前两个都要难,但是难度评级却比第二个要低. 解题思路 依旧是考虑如何建模和建立源点汇点.每个点的货物数量到最后都一样的话肯定是等于他们的平均值.用 $num$ 数组存储原 ...
- 【PowerOJ1754&网络流24题】负载平衡问题(费用流)
题意: 思路: [问题分析] 转化为供求平衡问题,用最小费用最大流解决. [建模方法] 首先求出所有仓库存货量平均值,设第i个仓库的盈余量为A[i],A[i] = 第i个仓库原有存货量 - 平均存货量 ...
- 【刷题】LOJ 6013 「网络流 24 题」负载平衡
题目描述 G 公司有 \(n\) 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 \(n\) 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 ...
- 「网络流24题」「LuoguP4015」 运输问题
Description W 公司有 m 个仓库和 n 个零售商店.第 i 个仓库有 ai 个单位的货物:第 j 个零售商店需要 bj 个单位的货物. 货物供需平衡,即 ∑ai=∑bj . 从第 i ...
- 【线性规划与网络流 24题】已完成(3道题因为某些奇怪的原因被抛弃了QAQ)
写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1 ...
随机推荐
- Java测试(二)
一.选择题(每题2分,共40分) 1.下面哪个是Java语言中正确的标识符(C ) a) 3com b)import c)that d)this 2.下面哪个语句 ...
- jinja2批量生成python脚本
在使用airflow的过程中需要大量的dag脚本进行性能测试,如果一个个去编写dag脚本未免太过麻烦,于是想到用python的jinja2模板引擎实现批量脚本生成. 先通过pip命令安装jinja ...
- Burpsuit构造测试数据
一.使用场景 测试设备web性能优化时,需要构造或删除多个user.设备.设备账号.订单等,除了使用excel批量导入外,有些数据构造/删除使用burpsuit代理并将对应请求发送到Burp In ...
- CentOS7 自定义登录前后欢迎信息
博客地址:http://www.moonxy.com 一.摘要 本人当前使用的是阿里云 ECS 服务器,操作系统为 linux,发行版为 CentOS 7.4.1708.系统默认都已经提供了欢迎信息, ...
- DirectX12 3D 游戏开发与实战第四章内容(下)
Direct3D的初始化(下) 学习目标 了解Direct3D在3D编程中相对于硬件所扮演的角色 理解组件对象模型COM在Direct3D中的作用 掌握基础的图像学概念,例如2D图像的存储方式,页面翻 ...
- 20 (OC)* GCD、NSOperation、NSThread。多线程
多线程编程技术的优缺点比较 NSThread (抽象层次:低) 优点:轻量级,简单易用,可以直接操作线程对象 缺点: 需要自己管理线程的生命周期,线程同步.线程同步对数据的加锁会有一定的系统开销. C ...
- (七十一)c#Winform自定义控件-折现图
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- 用git提交新项目到github
1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...
- Spring Boot(三) 使用Lombok
C#写的多了用习惯了众多的语法糖,再写起来Java总会有一些非常不舒服的地方.比如用惯了C#的属性在用起来Java的属性,写起来就会感觉不够优雅.如:定义一个Person类 public cl ...
- 23种设计模式之抽象工厂(Abstract Factory Pattern)
抽象工厂 当想创建一组密不可分的对象时,工厂方法似乎就不够用了 抽象工厂是应对产品族概念的.应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品.比如,每个汽车公司可能要同时生产轿车.货车. ...