$Luogu2512/CH122/AcWing122$糖果传递 模拟
$Description$
有$n$个小朋友坐成一圈,每人有$a_i$个糖果.
每人只能给左右两人传递糖果.
每人每次传递一个糖果代价为$1$.
求使所有人获得均等糖果的最小代价.
$Sol$
感觉超级似曾相识,大概是寒假做过的题目.
求出平均数$x$,然后$a_i-=x$
设$i$小朋友给$i+1$小朋友$b_i$个糖果,特别地,$b_n$表示第$n$个小朋友给第$1$个小朋友的糖果.
$b_n+a_1-b_1=0\ \Leftrightarrow\ b_1=a_1+b_n=s_1+b_n$
$b_1+a_2-b_2=0\ \Leftrightarrow\ b_2=a_2+b_1=a_1+a_2+b_n=s_2+b_n$
答案为$\left |b_1 \right |+\left |b_2 \right |+....+\left |b_n \right |$
即为$\left |s_1+b_n \right |+\left |s_2+b_n \right |+....+\left |s_n+b_n \right |$
就是$-b_n$到$s_1,s_2,....,s_n$的距离之和,要使之最小,$-b_n$就为$s_1,s_2,....,s_n$的中位数.
$over$
$Code$
#include<bits/stdc++.h>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;i++)
#define yes(i,a,b) for(Rg int i=a;i>=b;i--)
#define ll long long
#define db double
using namespace std;
il int read()
{
int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
const int N=1e6+;
int n,a[N];
ll as,s[N];
int main()
{
n=read();
go(i,,n)a[i]=read(),s[n]+=a[i];
Rg int ave=s[n]/n,qwq;
go(i,,n)a[i]-=ave,s[i]=s[i-]+a[i];
sort(s+,s+n+);
qwq=-s[n/+];//qwq=-b[n]
go(i,,n)as+=abs(s[i]+qwq);
printf("%lld\n",as);
return ;
}
随机推荐
- mysql查询包含逗号的数据,并逗号拆分为多行展现
在做系统开发的时候,有可能是由于之前的遗留问题,导致在数据入库的时候,将多个数据以逗号分隔的实行,存储在一条数据中,例如: ID VALUE 1 yang,zheng,song 2 zhao,qian ...
- Hbase API: 写入Bigtable.
- git学习一——Pro-Git
1.配置用户名,邮箱 git config --global user.name "Mike" git config --global user.email Mike@exampl ...
- php parse_url linux 解析问题
耕毅 解析url函数parse_url() (PHP 4, PHP 5, PHP 7) parse_url — 解析 URL,返回其组成部分 mixed parse_url ( string $url ...
- 深入理解iptables防火墙
0x00 Linux 安全性和 netfilter/iptables Linux 因其健壮性.可靠性.灵活性以及好象无限范围的可定制性而在 IT 业界变得非常受欢迎.Linux 具有许多内置的能力, ...
- H3C SSH配置例子
- maven中如果使用本地jar
1.安装到本地仓库class12.jar这个东西在中央仓库里没有,所以,cmd到oracle\product\10.2.0\db_1\jdbc\lib路径下,mvn install 就好了(发布第三方 ...
- 传说中Python最难理解的点|看这完篇就够了(装饰器)
https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...
- CSDN-Java培训 - 看看这次会有多少人跟风...
2019年5月8日,闲来无事(最近答辩还没事......),存个档. 看看这一波风口,记录互联网+教育.
- LRJ-Example-06-04-Uva11988
单向链表的元素存放在数组s[]中,next指针存放在数组next[]中. 链表初始为空,next[0] == 0 代表链表结尾,类似NULL指针,在最后打印链表的时候作为for循环结束的条件. 依次插 ...