$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 ;
}
随机推荐
- PDM->OOM->C#实体类生成时,对Blob类型字段的处理
pdm中的Blob字段生成OOM时,自动变成了string类型,再生成实体类时也是string 如何将oom中对应的blob字段设置为Byte[]类型,目前没找到方法, 只能通过脚本,将生成后的OOM ...
- MapReduce数据流-概述
- hdu 3873 Invade the Mars(有限制的最短路 spfa+容器)
Invade the Mars Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 365768/165536 K (Java/Others ...
- Core Data 数据出现Fault
I am mapping Json Data from Server using Restkit and I am Displaying those data by fetching from db. ...
- Python--day72--SweetAlert插件
引用:http://www.cnblogs.com/liwenzhou/p/8718861.html 补充一个SweetAlert插件示例 点击下载Bootstrap-sweetalert项目. $( ...
- tp5 select出来数据集(对象)转成数组
1.先在数据库配置文件中 //数据集返回类型 'resultset_type' => 'collection', 2.在使用时, 使用 toArray() 方法 //查询数据库 $news = ...
- 2019-7-29-WPF-元素裁剪-Clip-属性
title author date CreateTime categories WPF 元素裁剪 Clip 属性 lindexi 2019-7-29 10:0:13 +0800 2019-1-3 15 ...
- Python--day60--jinjia2模块
- python基础十三之内置函数
内置函数 操作字符串代码 eval和exec print(eval('1+2')) # 简单的计算 有返回值 exec('for i in range(10):print(i)') # 简单的流程控制 ...
- H3C 递归查询