[返回网络流 24 题索引]

题目描述

有成环状的 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 负载平衡问题的更多相关文章

  1. Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流)

    Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流) Description G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使n ...

  2. LibreOJ #6013. 「网络流 24 题」负载平衡 最小费用最大流 供应平衡问题

    #6013. 「网络流 24 题」负载平衡 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  3. loj #6013. 「网络流 24 题」负载平衡

    #6013. 「网络流 24 题」负载平衡 题目描述 G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n nn 个仓库的库存数量相同.搬运货物时 ...

  4. 2018.10.15 loj#6013. 「网络流 24 题」负载平衡(费用流)

    传送门 费用流sb题. 直接从sss向每个点连边,容量为现有物品量. 然后从ttt向每个点连边,容量为最后库存量. 由于两个点之间可以互相任意运送物品,因此相邻的直接连infinfinf的边就行了. ...

  5. Luogu P4016 「 网络流 24 题 」负载平衡问题

    吐槽题目难度,这个题建模好像比前两个都要难,但是难度评级却比第二个要低. 解题思路 依旧是考虑如何建模和建立源点汇点.每个点的货物数量到最后都一样的话肯定是等于他们的平均值.用 $num$ 数组存储原 ...

  6. 【PowerOJ1754&网络流24题】负载平衡问题(费用流)

    题意: 思路: [问题分析] 转化为供求平衡问题,用最小费用最大流解决. [建模方法] 首先求出所有仓库存货量平均值,设第i个仓库的盈余量为A[i],A[i] = 第i个仓库原有存货量 - 平均存货量 ...

  7. 【刷题】LOJ 6013 「网络流 24 题」负载平衡

    题目描述 G 公司有 \(n\) 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 \(n\) 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 ...

  8. 「网络流24题」「LuoguP4015」 运输问题

    Description W 公司有 m 个仓库和 n 个零售商店.第 i 个仓库有 ai 个单位的货物:第 j 个零售商店需要 bj​ 个单位的货物. 货物供需平衡,即 ∑ai=∑bj​ . 从第 i ...

  9. 【线性规划与网络流 24题】已完成(3道题因为某些奇怪的原因被抛弃了QAQ)

    写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1 ...

随机推荐

  1. Java反序列化漏洞原理解析(案例未完善后续补充)

    序列化与反序列化 序列化用途:方便于对象在网络中的传输和存储 java的反序列化 序列化就是将对象转换为流,利于储存和传输的格式 反序列化与序列化相反,将流转换为对象 例如:json序列化.XML序列 ...

  2. Redis的实现(java)

    日常操作 public static void main(String[] args) { Jedis jedis = ); //1.开启事务 Transaction transaction = je ...

  3. 类似Flag counter被园子禁用后的备选方案

    背景介绍 2019年9月4日,园子发生严重事故,影响范围为整个园子.随着bug的修复,从个人博客无法访问——>公告栏部分功能禁用——>文件无法上传(多个文章中的图片均加载不出来)——> ...

  4. [Advanced Python] 12 - Interview Quiz

    第一步.大扫荡复习 Resource: https://www.liaoxuefeng.com/wiki/1016959663602400/1016959735620448 IDE:https://r ...

  5. [DE] Pipeline for Data Engineering

    How to build an ML pipeline for Data Science 垃圾信息分类 Ref:Develop a NLP Model in Python & Deploy I ...

  6. [Pandas] 06 - Data Preprocessing and Cleaning

    From: DBWangGroup 基于该系列代码的实践与补充思考. 补充:特征工程 结合:[Scikit-learn] 4.3. Preprocessing data /* implement */

  7. .NET Core使用NPOI导出复杂Word详解

    前言: 最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多.最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第 ...

  8. ELK7.3实战安装配置文档

    整体架构   一:环境准备 1.环境规划准备 192.168.43.16 jdk,elasticsearch-master ,logstash,kibana 192.168.43.17 jdk,ela ...

  9. [AspNetCore 3.0] 在RazorPages/MVC 中使用 Blazor (Razor组件)

    开发环境 Vs2019 16.3.1 dotnetcore 3.0 一.开始 新建webapp项目 dotnet new webapp -o projectname 或Vs 中新建项目选择 Web应用 ...

  10. 深度汉化GCompris-qt,免费的幼儿识字软件

    1 需求 因为有个小孩上幼儿园了,想开始教他一些汉语拼音和基本的汉字,但通过一书本和卡片又有些枯燥乏味,于上就上网搜索一些辅助认字的应用,还购买了悟空识字APP,在用的过程中发现他设置了很严格的关卡, ...