bzoj1045 糖果传递

Description

有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。

Input

第一行一个正整数nn<=1'000'000,表示小朋友的个数.
接下来n行,每行一个整数ai,表示第i个小朋友得到的糖果的颗数.

Output

求使所有人获得均等糖果的最小代价。

Sample Input

4
1
2
5
4

Sample Output

4
这道题让我想到了白书上面的相似的一道题:

UVA11300 Spreading the Wealth

A Communist regime is trying to redistribute wealth in a village. They have have decided to sit everyone around a circular table. First, everyone has converted all of their properties to coins of equal value, such that the total number of coins is divisible by the number of people in the village. Finally, each person gives a number of coins to the person on his right and a number coins to the person on his left, such that in the end, everyone has the same number of coins. Given the number of coins of each person, compute the minimum number of coins that must be transferred using this method so that everyone has the same number of coins.

Input

There is a number of inputs. Each input begins with n (n < 1000001), the number of people in the village. n lines follow, giving the number of coins of each person in the village, in counterclockwise order around the table. The total number of coins will fit inside an unsigned 64 bit integer.

Output

For each input, output the minimum number of coins that must be transferred on a single line.

Sample Input

3
100
100
100
4
1
2
5
4

Sample Output

0
4
题意:n个人围成一圈,每个人都有一些硬币,,每个人只能给左右相邻的人硬币,问最少交换几个硬币,使每个人硬币一样多。
我第一反应:费用流。第二反应:费用流。第三反应:费用流。
然后看uva11300题解:
首先,最终每个人金币数量可以计算出来,我们用M表示每个人最后拥有的金币数。
我们对于第i个人可以看作他给了他左边的人xi个金币(负数表示反向传递),他右边的人给了他xi+1个金币,假设他一开始拥有的金币数量为Ai,那么有Ai-xi+xi+1=M。
如果我们继续列下去就会变成这样:
A1-x1+x2=M -> x2=M-A1+x1 ->  令C1=A1-M -> x2=x1-C1
A2-x2+x3=M -> x3=M-A2+x2=2*M-A1-A2+x1 ->  令C2=A1+A2-2*M -> x3=x1-C2
A3-x3+x4=M -> x4=M-A3+x3=3*M-A1-A2-A3+x1 ->  令C3=A1+A2+A3-3*M -> x4=x1-C3
.......
那么我们就会得到n个等式,但是我们发现我们可以用这n个等式中的任意n-1个去变换得到最后剩下那个等式。
因为我们知道 $\sum A_i =M \times n $ ,那么最后一个等式Cn=0,就是x1=x1
也就是说,最后那个等式是没有用的,我们只会用到n-1个等式。那么这n-1个等式可以用来做什么呢,我们怎样才能求得 $ \sum abs(x_i) $ 最小值呢?
$ \sum abs( x_i ) = abs( x_1 )+abs( x_2 )+abs( x_3 )+......+abs( x_n )=abs( x_1 ) +abs(x_1-C_1) +abs(x_1- C_2)+ ......+abs(x_1-C_{n-1})$
由于Ci是可以直接计算出来的,可以当作常数,所以说这个等式相当于是求一个最优的x1,使得数轴上x1到Ci距离和最小,而这个距离和就是我们所求的答案。
最后问题转化成求数轴上一个点到所有已知的点最小距离,相信在小学(或是初中)数学老师都讲过,这样的点就是中位数啦。
然后就直接算出C,然后算中位数与其他的所有的点的距离。
bzoj1045 代码:
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1e6+10;
long long n,tot,ans,c,A[maxn],C[maxn];long long aa;char cc;
long long read() {aa=0;cc=getchar();while(cc<'0'||cc>'9') cc=getchar();while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();return aa;
}int main() {n=read();for(int i=1;i<=n;++i) A[i]=read(),tot+=A[i];tot/=n;for(int i=1;i<n;++i) C[i]=A[i]-tot+C[i-1];sort(C+1,C+n+1);//还有一个C[i]为0的 for(int i=1;i<=n;++i) ans+=abs(C[i]-C[(n+1)>>1]);printf("%lld",ans);return 0;
}

  

转载于:https://www.cnblogs.com/Serene-shixinyi/p/7594077.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型API范围...

BEGINNING SHAREPOINT 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型API范围 本章之前提到过。client对象模型应用中一个不足就是缺乏对SP APIs和訪问功能的支持不足。转载于:https://www.cnblogs.com/yutingliuyl/p/6748382.html

为.NET应用添加截图功能

本文介绍了 .NET 实现截图功能的思路和过程&#xff0c;如果你仅想了解最后的解决方案&#xff0c;可以直接查看文章末尾。截图的功能我们应该都经常使用&#xff0c;在开发软件时&#xff0c;我们有时也或多或少需要提供这方面的功能&#xff0c;无论是为用户更方便提供远程诊…

K8S集群Master高可用实践

本文将在前文基础上介绍k8s集群的高可用实践&#xff0c;一般来讲&#xff0c;k8s集群高可用主要包含以下几个内容&#xff1a;1、etcd集群高可用2、集群dns服务高可用3、kube-apiserver、kube-controller-manager、kube-scheduler等master组件的高可用 其中etcd实现的办法较为…

[转载]智能科普:VR、AR、MR的区别

智能科普&#xff1a;VR、AR、MR的区别 http://news.zol.com.cn/553/5534833.html news.zol.com.cn 2015-11-23 16:00近日&#xff0c; 获得谷歌5亿美元融资的技术公司Magic Leap在WSJD展会中放出了一段实录视频&#xff0c;引起不小骚动。如今&#xff0c;也有媒体称他们为MR公…

PHP项目中,记录错误日志

一、场景介绍&#xff1a; 环境&#xff1a;LNMP 我们通常是通过nginx的错误日志来分析分错的&#xff0c;也就是我们在各个server中定义的error_log。 比如下面这样&#xff0c;就是将错误日志定义在/etc/nginx/logs/error/www.xiaobudiu.top.log&#xff0c;发生错误&#xf…

持续集成指南:GitLab 的 CI/CD 工具配置与使用

1前言写代码这项工作&#xff0c;本质就是将工作自动化&#xff0c;减少手工操作提供效率&#xff0c;因为人的本质都是懒狗&#xff0c;程序员也不能例外&#xff0c;为了各种意义的效率提升&#xff08;懒&#xff09;&#xff0c;我们需要持续集成工具&#xff0c;将代码测试…

php 错误日志 redis' already loaded in Unknown on line 0

环境介绍&#xff1a;LNMP 报错信息&#xff1a;注&#xff1a;这个php_errors.log 是我在php.ini 中定义的错误日志路径 问题原因&#xff1a; 报错信息给出的意思是&#xff1a;redis和memcache 模块已经加载过问题解决&#xff1a; php加载模块有两种方式&#xff0c;一种是…

第一周作业

我的Git账号&#xff1a;AI1452349541 和代码图 这是我在电脑和手机上下的网易有道词典 &#xff0c; C也下了。 ***学习内容总结*** 感觉任务并不是很难&#xff0c;有些任务没完成是 因为还没买电脑不好弄&#xff0c;下周电脑一定到位。 ***遇到的问题…

升级MariaDB为10.1版本

2019独角兽企业重金招聘Python工程师标准>>> CentOS中升级mariadb为10.1GA版本。 1、如果有&#xff0c;停止服务 systemctl stop mariadb 2、卸载原来的数据库服务 yum -y remove mari* 3、删除数据库文件 rm -rf /var/lib/mysql/* 4.创建/etc/yum.repos.d/MariaDB…

第一篇文章

第一次写博客。欢迎各位大牛捧场转载于:https://www.cnblogs.com/clnchanpin/p/6753665.html

羊了个羊的Ignite大会又来啦

据说最近羊了个羊非常火啊&#xff5e;可惜没有时间精力研究。不过&#xff0c;薅微软羊毛的机会我是一定不会错过的&#xff0c;这不&#xff0c;薅羊毛的机会来了&#xff0c;哈哈哈。作为经常薅微软羊毛的老司机&#xff0c;今天收到了微软的邮件&#xff0c;告知有新的羊毛…

清除谷歌浏览器的dns缓存

谷歌地址栏输入&#xff1a; chrome://net-internals/#dns出现下面界面&#xff1a;找到DNS选项&#xff0c;选择clear host cache即可效果&#xff1a;这样&#xff0c;谷歌浏览器上的dns缓存就清理掉了。应用场景&#xff1a; 本地环境和线上环境用的是一个host&#xff0c;这…

生产YUM源搭建

企业内部YUM源搭建转载于:https://www.cnblogs.com/xiangtanglaojing/p/7603581.html

什么样的代码称得上是好代码?

“软件自有其美感所在” --《重构》图片&#xff1a;崇礼瀚海梁的山花 拍摄于2022年8月13日 摄影师&#xff1a;刘先生这篇内容写作于4年前&#xff08;2018年&#xff09;&#xff0c;是自己多年软件开发工作的一点感悟&#xff0c;现在看来虽有偏颇&#xff0c;但总体思想方…

Coding and Paper Letter(十四)

2019独角兽企业重金招聘Python工程师标准>>> 资源整理。 1 Coding: 1.R语言包ungeviz&#xff0c;ggplot2的拓展包&#xff0c;专门用来作不确定性的可视化。 ungeviz 2.计算机图形学相关开源项目。 计算机图形学光线追踪开源项目C源码。 computer graphics ray tra…

QBC运算符含义

HQL运算符 QBC运算符 含义 Restrictions.eq() 等于 <> Restrictions.not(Exprission.eq()) 不等于 > Restrictions.gt() …

eclipse安装反编译插件

一、下载插件 1、官方地址&#xff1a;http://jd.benow.ca/ 2、百度网盘&#xff1a;http://pan.baidu.com/s/1eSJ7Tiq 密码&#xff1a;sr6p 二、打开eclipse&#xff0c;点击“Help > Install New Software” 三、Name填&#xff1a;JD-Eclipse Update Site&#xff08;可…

PHP 项目中缓存的多种应用实现

一、CDN缓存原理和介绍 1、各地部署多套静态存储服务&#xff0c;本质上是空间成本换时间 2、CDN是域名和真实服务器中间的一个环节&#xff0c;添加cdn节点后&#xff0c;用户访问时&#xff0c;自动选择最近的节点内容&#xff0c;不存在再请求原始服务器 3、CDN本质上是一种…

【tomcat】servlet原理及其生命周期

1.什么是servlet&#xff1f; Servlet&#xff08;Servlet Applet&#xff09;&#xff0c;全称Java Servlet,是用Java编写的服务器端程序。而这些Servlet都要实现Servlet这个接口。其主要功能在于交互式的浏览和修改数据&#xff0c;生成动态Web内容。Servlet运行于支持Java的…

实现一个监控 IP 的 windows 服务

实现一个监控 IP 的 windows 服务Intro我们公司的 VPN 用自己的电脑连公司的台式机的时候需要用 IP 地址&#xff0c;有一次尝试去连的时候发现连不上&#xff0c;第二天到公司发现 IP 变掉了&#xff0c;不是之前连的 IP 了&#xff0c;于是就想写一个简单 Windows 服务来监控…