题意

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

思路

假设平均数是x,且a1给an了k个(k<0说明是an给a1了-k个),那么总代价就可以算出来:

an
an+k a1-k a2
代价:|k| x a1+a2-x-k a3
代价:|a1-x-k| x a1+a2+a3-2x-k
代价:|a1+a2-2x-k| x
代价:|a1+a2+a3-3x-k|

令bi=sum(a1..i)-ix,则总代价=sum|bi-k|。易知k为中位数时此值最小。问题转化为求中位数…… 用自己快速选择第K大模板TLE……sort直接过了……

代码

[cpp] #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <string> #include <cstring> #include <vector> #include <set> #include <stack> #include <queue> #define MID(x,y) ((x+y)/2) #define MEM(a,b) memset(a,b,sizeof(a)) #define REP(i, begin, end) for (int i = begin; i <= end; i ++) using namespace std; const int maxn = 1000005; int a[maxn]; long long sum[maxn], b[maxn]; int main(){ int n; scanf("%d", &n); sum[0] = 0; REP(i, 1, n){ scanf("%d", &a[i]); sum[i] = sum[i-1] + a[i]; } long long average = sum[n] / n; REP(i, 0, n-1){ b[i] = sum[i] - (i) * average; } sort(b, b+n); long long res = 0; REP(i, 0, n-1){ res += abs(b[i] - b[n/2]); } printf("%lld\n", res); return 0; } [/cpp]

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114124.html

BZOJ 1045 [HAOI2008]糖果传递 ★(环形等分:中位数)相关推荐

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

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

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

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

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

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

  4. bz10451045: [HAOI2008] 糖果传递

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

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

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

  6. bzoj1045: [HAOI2008] 糖果传递

    挺有趣的.观察题目环形?切掉一个跑贪心?O(n^2)超时了... 先计算m为每个最终糖果数量. 设An传给A1了k个糖果, 那么A1传给A2的糖果数为S1=k+A1-m,T1=A1-m 那么A2传给A ...

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

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

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

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

  9. luogu P2512 [HAOI2008]糖果传递

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

最新文章

  1. 为什么python不报错不出结果_python的坑货ConfigParser类读取文件失败不报错
  2. python监听器_监听器 - python成长中 - 博客园
  3. mybatis update返回值_mybatis 详解(六)通过mapper接口加载映射文件
  4. 空间点到直线的距离c语言,空间两直线间距离公式(文档篇).doc
  5. JSP计算机社团管理系统源码,大学生社团管理系统JSP
  6. HBase二级索引的设计原理及简单设计demo
  7. Matlab Robotic Toolbox工具箱学习笔记
  8. 脉内分析从零开始(持续更新)
  9. ToolBoxFeatureDataZoomOpts:工具箱区域缩放配置项
  10. liuyubobobo:学习方法分享
  11. html5教程源码使用方法,HTML初级教程(一)所有的代码和操作方法
  12. 电子绘画画笔笔刷模式的学习笔记
  13. Python入门习题大全——词汇表2
  14. python打开文件,路径存在'\t'被转义
  15. JavaScript中递归函数
  16. 编程之美--3.5最短摘要的生成
  17. 沈阳大学计算机李华,计算机自适应考试曝光率控制-数学专业毕业论文.pdf
  18. 「元宇宙」成为发展新坐标,文化产业如何「沉浸式」升维?
  19. Android自定义桌面墙纸
  20. express 4.x API 及简单示例

热门文章

  1. 长见识:你真的知道C语言里extern quot;Cquot; 的作用吗?
  2. linux module原理,NodeJS的模块原理
  3. java obix_obix协议在java中的配置和使用详解
  4. python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...
  5. 【渝粤教育】 国家开放大学2020年春季 1009离散数学(本) 参考试题
  6. 【渝粤题库】国家开放大学2021春1708农业产业发展规划题目
  7. 盘点物联网的4个认知误区
  8. 怎么讲服务器上的文件装进电脑,怎么把电脑文件放进云服务器
  9. 苹果笔记本macbook pro如何安装python_在Mac上兼容安装Python3并保留原先的Python2.7
  10. wdcp安装mysql_安装wdCP,无法连接mysql,解决方法