BZOJ 1045 [HAOI2008]糖果传递 ★(环形等分:中位数)
题意
有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]糖果传递 ★(环形等分:中位数)相关推荐
- bzoj 1045: [HAOI2008]糖果传递
1045: [HAOI2008] 糖果传递 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4094 Solved: 1970 [Submit][S ...
- bzoj 1045 [HAOI2008] 糖果传递 —— 贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1045 好像是贪心...但这是一个环... 看博客:http://hzwer.com/2656 ...
- 【BZOJ】1045: [HAOI2008]糖果传递(中位数)
http://www.lydsy.com/JudgeOnline/problem.php?id=1045 白书上有讲 没ac的坑点在,数据范围n<=1,000,000 #include < ...
- bz10451045: [HAOI2008] 糖果传递
1045: [HAOI2008] 糖果传递 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2958 Solved: 1319 [Submit][S ...
- [HAOI2008]糖果传递 结论题
题目描述 有\(n(n<1000000)\)个小朋友坐成一圈,每人有\(a_i\)个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为\(1\),求使所有人糖果数相等的最小代价. 暴力 ...
- bzoj1045: [HAOI2008] 糖果传递
挺有趣的.观察题目环形?切掉一个跑贪心?O(n^2)超时了... 先计算m为每个最终糖果数量. 设An传给A1了k个糖果, 那么A1传给A2的糖果数为S1=k+A1-m,T1=A1-m 那么A2传给A ...
- BZOJ1045 HAOI2008糖果传递(贪心)
显然最后每个小朋友所拥有的糖果数就是糖果数总和的平均数.设该平均数为t. 环的问题一般断成链,但这个题似乎没有什么很好的办法在枚举断点的时候快速算出答案(我甚至不知道会不会有断点) 于是我们假装把他断 ...
- [BZOJ1045][HAOI2008] 糖果传递(数学相关)
题目描述 传送门 题目大意:有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1.求使所有人获得均等糖果的最小代价. 题解 设第i个人会给第i+1个人 xi ...
- luogu P2512 [HAOI2008]糖果传递
传送门 Time cost: 35min 环形均分纸牌 我们再回顾一下均分纸牌 1 scanf("%d",&n); 2 for(i = 1; i <= n; i++) ...
最新文章
- 为什么python不报错不出结果_python的坑货ConfigParser类读取文件失败不报错
- python监听器_监听器 - python成长中 - 博客园
- mybatis update返回值_mybatis 详解(六)通过mapper接口加载映射文件
- 空间点到直线的距离c语言,空间两直线间距离公式(文档篇).doc
- JSP计算机社团管理系统源码,大学生社团管理系统JSP
- HBase二级索引的设计原理及简单设计demo
- Matlab Robotic Toolbox工具箱学习笔记
- 脉内分析从零开始(持续更新)
- ToolBoxFeatureDataZoomOpts:工具箱区域缩放配置项
- liuyubobobo:学习方法分享
- html5教程源码使用方法,HTML初级教程(一)所有的代码和操作方法
- 电子绘画画笔笔刷模式的学习笔记
- Python入门习题大全——词汇表2
- python打开文件,路径存在'\t'被转义
- JavaScript中递归函数
- 编程之美--3.5最短摘要的生成
- 沈阳大学计算机李华,计算机自适应考试曝光率控制-数学专业毕业论文.pdf
- 「元宇宙」成为发展新坐标,文化产业如何「沉浸式」升维?
- Android自定义桌面墙纸
- express 4.x API 及简单示例
热门文章
- 长见识:你真的知道C语言里extern quot;Cquot; 的作用吗?
- linux module原理,NodeJS的模块原理
- java obix_obix协议在java中的配置和使用详解
- python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...
- 【渝粤教育】 国家开放大学2020年春季 1009离散数学(本) 参考试题
- 【渝粤题库】国家开放大学2021春1708农业产业发展规划题目
- 盘点物联网的4个认知误区
- 怎么讲服务器上的文件装进电脑,怎么把电脑文件放进云服务器
- 苹果笔记本macbook pro如何安装python_在Mac上兼容安装Python3并保留原先的Python2.7
- wdcp安装mysql_安装wdCP,无法连接mysql,解决方法