挺有趣的。观察题目环形?切掉一个跑贪心?O(n^2)超时了。。。

先计算m为每个最终糖果数量。

设An传给A1了k个糖果,

那么A1传给A2的糖果数为S1=k+A1-m,T1=A1-m

那么A2传给A3的糖果数为S2=k+A1+A2-2*m ,T2=A1+A2-2*m

那么A3传给A4的糖果数为S3=k+A1+A2+A3-3*m ,T3=A1+A2+A3-3*m

...

那么An-1传给An的糖果数为Sn=k+A1+A2+A3+...+An-n*m ,Tn=A1+A2+A3+...+An-n*m

我们最终目的是让我们最终目的是让S总和越小越好。

看出来了什么,我们只需求出最适合的k值,那么k是什么S最小呢?

k=T的中位数的相反数时最短!!!利用数轴想想,很容易。

#include<bits/stdc++.h>
const int N=1000005;
typedef long long ll;
int a[N];
ll f[N];
int main(){int n;ll m=0,ans=0;scanf("%d",&n);for(int i=1;i<=n;++i)scanf("%d",&a[i]),m+=a[i];m/=n;for(int i=1;i<=n;++i)f[i]=f[i-1]-m+a[i];std::sort(f+1,f+1+n);for(int i=1;i<=n;++i){ans+=abs(f[i]-f[(n+1)/2]);}printf("%lld",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/Dream-Runner/p/10131604.html

bzoj1045: [HAOI2008] 糖果传递相关推荐

  1. BZOJ1045 HAOI2008糖果传递(贪心)

    显然最后每个小朋友所拥有的糖果数就是糖果数总和的平均数.设该平均数为t. 环的问题一般断成链,但这个题似乎没有什么很好的办法在枚举断点的时候快速算出答案(我甚至不知道会不会有断点) 于是我们假装把他断 ...

  2. [BZOJ1045][HAOI2008] 糖果传递(数学相关)

    题目描述 传送门 题目大意:有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1.求使所有人获得均等糖果的最小代价. 题解 设第i个人会给第i+1个人 xi ...

  3. bz10451045: [HAOI2008] 糖果传递

    1045: [HAOI2008] 糖果传递 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2958  Solved: 1319 [Submit][S ...

  4. bzoj 1045: [HAOI2008]糖果传递

    1045: [HAOI2008] 糖果传递 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4094  Solved: 1970 [Submit][S ...

  5. 【HAOI2008】【BZOJ1045】糖果传递(环形纸牌均分,前缀和)

    problem 一个有n个数的环 每次只能向相邻的数移动,移动一个数代价为1 求让所有数相等的最小代价 solution 一:思路 1.纸牌均分问题每行答案是∑ni=1|i∗T/n−G[i]|∑i=1 ...

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

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

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

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

  8. [HAOI2008]糖果传递 结论题

    题目描述 有\(n(n<1000000)\)个小朋友坐成一圈,每人有\(a_i\)个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为\(1\),求使所有人糖果数相等的最小代价. 暴力 ...

  9. luogu P2512 [HAOI2008]糖果传递

    传送门 Time cost: 35min 环形均分纸牌 我们再回顾一下均分纸牌 1 scanf("%d",&n); 2 for(i = 1; i <= n; i++) ...

最新文章

  1. const int * 、int * const、int const* 、const int a(){ } 和int a()const { }的区别和联系
  2. 编译-C语言库FFTW支持iOS平台的静态库
  3. 修改octave的editor的背景颜色
  4. textview 背景变形_嘉兴海宁市家庭别墅背景墙装修供应——零度木门厂家
  5. UVA1585 UVALive3354 Score【水题】
  6. 了解OutOfMemoryError异常 - 深入Java虚拟机读后总结
  7. Vuex的官方文档笔记
  8. 关于WIN11使用SecoClient接收返回码超时问题
  9. 使用Docker部署mongo后 使用Robo 3T、Studio 3T( MongoChef )在 create databse 创建数据库时的掉坑笔记
  10. 4G5G学习过程中整理的专业名词的符号简称
  11. java 图片转pdf_在Java语言中将图像转换为PDF?Spire.PDF for Java轻松搞定!
  12. NPS——搭建属于你的内网穿透平台
  13. mysql 临时表联表查询_一、MySQL中使用从表A中取出数据来更新表B的内容例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin。SQL语言中不...
  14. iOS开发之获取实时气压、相对高度
  15. dd命令详细(好文收藏)
  16. 区别samtools faid产生的.fai文件功能和bwa index 产生的四个文件的功能
  17. 监控他人摄像头,并发送图片到邮箱
  18. 信息安全产品体系的介绍
  19. linux7 inittab没有,CentOs7 7个运行级别介绍,(CentOs7 inittab在使用systemd时不再使用)...
  20. 四十六、基础框架(四)字符串物件

热门文章

  1. PHP - NetBeans中调试PHP
  2. 什么是Windows Service应用程序?(转)
  3. 官方消息:微软再次提醒IE浏览器将于6月15日停止支持
  4. 技术无罪?谷歌AI伦理团队负责人被解雇
  5. 华为机试题1:计算字符串最后一个单词的长度,单词以空格隔开。
  6. linux后台运行cat命令,Linux程序前台后台切换
  7. 对Fragment生命周期的理解以及其与Activity的关联
  8. kubernetes不同的命名空间下的容器能通信吗_超长干货 | Kubernetes命名空间详解
  9. php如何压缩txt文件怎么打开,PHP-压缩txt文件,同时保持文件扩展名
  10. python爬快手个人介绍个性_快手个性个人介绍句子签名 快手自己介绍模板句子...