Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 4897  Solved: 2457
[Submit][Status][Discuss]

Description

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

Input

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

Output

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

Sample Input

4
1
2
5
4

Sample Output

4
 
毕业被班上委托制作学校录取分布地图。。。没钱拿(눈_눈),我的时间可是10美刀/小时
 
和均分纸牌类似,以绝对值差为贪心原则
设每位小朋友有Ai颗糖,若Xi>0表示第i位小朋友向第i-1位小朋友传递Xi颗糖,若Xi<0表示第i-1位小朋友向第i位小朋友传递Xi颗糖
最终每位小朋友持有ave=(A1+A2...+An)/n颗糖
则:
A1-X1+X2=ave——>X2=X1-(A1-ave)=X1-C1——>C1=A1-ave
A2-X2+X3=ave——>X3=X2-(A2-ave)=X1-C2——>C2=C1+A2-ave
A3-X3+X4=ave——>X4=X3-(A3-ave)=X1-C3——>C3=C2+A3-ave
......
An-Xn+X1=ave——>Xn=Xn-1-(An-ave)=X1-Cn——>Cn=Cn-1+An-ave
于是ans=|X1-C1|+|X2-C2|+|X3-C3|+...+|Xn-Cn|
为了使ans最小,Xi应该最接近Ci的平均数
 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std; #define LL long long const int MAXN=; LL n,mid,ave,ans;
LL A[MAXN],C[MAXN]; int main()
{
cin>>n;
for(int i=;i<=n;i++)
{
cin>>A[i];
ave+=A[i];
}
ave/=n;
for(int i=;i<=n;i++)
C[i]=C[i-]+A[i]-ave;
sort(C+,C+n+);
mid=C[n/+];
for(int i=;i<=n;i++)
ans+=abs(C[i]-mid);
cout<<ans<<endl;
return ;
}

1045: [HAOI2008] 糖果传递的更多相关文章

  1. BZOJ 1045: [HAOI2008] 糖果传递 数学

    1045: [HAOI2008] 糖果传递 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1045 Description 有n个小朋友坐 ...

  2. 【BZOJ 1045】 1045: [HAOI2008] 糖果传递

    1045: [HAOI2008] 糖果传递 Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n& ...

  3. bzoj 1045: [HAOI2008] 糖果传递 贪心

    1045: [HAOI2008] 糖果传递 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1812  Solved: 846[Submit][Stat ...

  4. 【BZOJ】1045: [HAOI2008]糖果传递(中位数)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1045 白书上有讲 没ac的坑点在,数据范围n<=1,000,000 #include < ...

  5. bzoj 1045 [HAOI2008] 糖果传递——设变量推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1045 费用流TLE. #include<iostream> #include&l ...

  6. 1045: [HAOI2008] 糖果传递 - BZOJ

    Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1.Input 小朋友个数n 下面n行 aiOutput 求使所有人获得均等糖果的 ...

  7. [BZOJ 1045] [HAOI2008] 糖果传递

    题目链接:BZOJ 1045 Attention:数据范围中 n <= 10^5 ,实际数据范围比这要大,将数组开到 10^6 就没有问题了. 我们先来看一下下面的这个问题. 若 n 个人坐成一 ...

  8. BZOJ 1045 [HAOI2008]糖果传递 ★(环形等分:中位数)

    题意 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. 思路 假设平均数是x,且a1给an了k个(k<0说明是an给a1了-k个),那么总代价就 ...

  9. bzoj 1045 [HAOI2008] 糖果传递 —— 贪心

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1045 好像是贪心...但这是一个环... 看博客:http://hzwer.com/2656 ...

随机推荐

  1. 华东交通大学2017年ACM“双基”程序设计竞赛 1005

    Problem Description 假设你有一个矩阵,有这样的运算A^(n+1) = A^(n)*A (*代表矩阵乘法)现在已知一个n*n矩阵A,S = A+A^2+A^3+...+A^k,输出S ...

  2. Angular2.0的学习(二)

    第二节课 1.了解路由的基础知识 2.子路由.辅助路由.路由守卫和保护路由 路由守卫: CanActivate:处理导航到某路由的情况 CanDectivate:处理从当前路由离开的情况 Resolv ...

  3. D - 稳住GCD DP

    http://acm.uestc.edu.cn/#/problem/show/923 给定一堆数字,求其所有数字的gcd. 现在要删除最多的数字,使得剩下的数字的gcd和原来的一样. 设dp[i][v ...

  4. Unity UGUI暂停按钮切换图片代码

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...

  5. DM设备的创建与管理

    DM(Device Mapper)即设备映射(逻辑设备). MD和DM是Linux内核上2种工作机制(实现逻辑设备)不同的模块. Physical Volume(PV): 物理卷         底层 ...

  6. arch安装软件提示包损坏

    错误:lib32-libjpeg6-turbo: signature from "Colin Keenan <colinnkeenan@gmail.com>" is u ...

  7. 精心整理的SQL语句学习大全

    -语 句 功 能  --数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据-数据 ...

  8. 白话SpringCloud | 第二章:服务注册与发现(Eureka)-上

    前言 从本章节开始,正式进入SpringCloud的基础教程.从第一章<什么是SpringCloud>中我们可以知道,一个微服务框架覆盖的东西是很多的,而如何去管理这些服务或者说API接口 ...

  9. 批量 多个JPG生产PDF .net C#

    using iTextSharp.text; using iTextSharp.text.pdf; using System; using System.Collections.Generic; us ...

  10. 从客户端(content1="<img src="/web/news/...")中检测到有潜在危险的 Request.Form 值。

    在html编辑器里面加入图片提交的时候 就报一个 从客户端(content1="<img src="/web/news/...")中检测到有潜在危险的 Reques ...