题意:
n个人围成一圈,每个人都有一些硬币,,每个人只能给左右相邻的人硬币,问最少交换几个硬币,使每个人硬币一样多;

思路:

首先要求出平均数M,每个人的硬币为numi;那么对于1,他能给予4号x1个硬币,并从2号出得到x2个硬币,那么对于1可得numi - x1 + x2 = M;
同理可得numn-xn+x1 = M
就能得到:
x2 =x1-C1  (C1 = num1 - M)
x3 = M - num2 + x2 = 2M-A1-A2+x1 = x1-x2
...
最后所求为
|x1| + |x1-C1|+...+|x1-Cn-1|,要求这个最小,那么就是要x1为这些数的中位数;

求出x1,在计算和就行了;

AC代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long longconst int N = 1000005;
ll num[N];
ll c[N];
int n;int main () {while(scanf("%d",&n) != EOF) {ll sum = 0;for(int i = 1 ; i <= n ; i++) {scanf("%lld",&num[i]);sum += num[i];}sum /= n ;c[0] = 0;for(int i = 1 ; i < n ; i++) {c[i] = c[i - 1] + num[i] - sum;}sort(c , c + n);ll x = c[n / 2];ll ans = 0;for(int i = 0 ; i < n ; i++) {ll temp = x - c[i];ans += fabs(temp);}printf("%lld\n",ans);}
}

uva11300(数学)相关推荐

  1. UVa11300 Spreading the Wealth(数学问题)

    题意:给出n个人,每个人有一些金币,可以给一些金币左边或者右边的人,最终使得每个人有相同的金币,问最小的转移金币是多少? 思路:可以假定给金币方向是逆时间方向,值可能是正负.M表示最终每个人有的金币, ...

  2. UVA11300 Spreading the Wealth 分金币 C++ (数学推导)

    参考算法竞赛入门经典训练指南 /* 最后每个人的金币:M = (A1+A2+...+An)/n(设当前每个人的金币为Ai) 设xi表示i给i+1传递给了xi个金币(xn表示n给1传递了xn个金币) 为 ...

  3. 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学

    前言:仅个人小记.本文记录的证明逻辑上不具有流畅性,主要是在一开始不流畅,拉格朗日神乎其技地引入了一个等价关系,进而实现了整个定理的证明,目前我没能给出拉格朗日是如何想到引入该等价关系. 最后给出推论 ...

  4. 通俗理解条件熵-数学

    就是决策树里面选划分属性用到的计算 条件熵越小表示划分之后各个集合越纯净 前面我们总结了信息熵的概念通俗理解信息熵 - 知乎专栏,这次我们来理解一下条件熵. 我们首先知道信息熵是考虑该随机变量的所有可 ...

  5. 内积和外积的物理意义-数学

    内积和外积的物理意义 Persistently关注 2018.07.31 14:28:46字数 277阅读 6,276 向量的内积 ab=ab cos(θ) 向量a和b的长度之积再乘以它们之间的夹角的 ...

  6. Ramsey定理数学

    https://blog.csdn.net/qq_41551359/article/details/84036876 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上 ...

  7. 数学上各种空间概念的关系图

    https://blog.csdn.net/cc1949/article/details/79744519 数学上有各种空间,概念容易混淆,为了记忆,整理出一张关系图. 目前不清楚无限维的内积空间是什 ...

  8. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...

  9. js函数语法:ASCII 码的相互转换,字符串操作,数学计算

    ASCII 码的相互转换 for (let i = 'a'.charCodeAt(); i <= 'z'.charCodeAt(); i++) {a.push(String.fromCharCo ...

最新文章

  1. flink集成springboot案例_Flink从流处理到流批一体的19个最佳实践
  2. [Android编程心得] Camera(OpenCV)自动对焦和触摸对焦的实现
  3. SQLServer 一些有用的语句
  4. java concurrentmap原理_Java集合番外篇 -- ConcurrentHashMap底层实现和原理
  5. VTK:网格之ClipFrustum
  6. 利用金山快盘云服务搭建自己的SVN服务器
  7. s6730堆叠_不再只是堆叠硬件 ivvi S6全方位评测
  8. 实现Java监视的12个步骤程序存在缺陷
  9. 用python内置函数算复杂度吗_Python减少代码量的两个内置函数
  10. WPF 绕圈进度条(一)
  11. 微软 Edge 浏览器加入对 ARM64 的原生支持
  12. Java项目导入eclipse后项目出现JRE System Library [JavaSE-1.8](unbound)
  13. Global GUI map for automation with VS.NET
  14. 最强 IOS系统改定位
  15. 衣米魔兽世界怀旧服:相关网友和测试玩家的提问,王乾亨以及衣米魔兽官方的解释与回答内容精选
  16. 如何更改微信标签名字_微信标签怎么设置?微信怎么批量设置好友标签?
  17. 基于JAVAWEB的高校行政管理系统
  18. Doom3bfg 技术说明
  19. Python 决策树计算熵、gini系数、误分率
  20. 微信最新数据:每天有 10.9 亿人打开微信,7.8 亿人进入朋友圈

热门文章

  1. HashMap原理技术知识整理
  2. 用汇编语言程序设计实现c=a b,汇编语言程序设计1.pdf
  3. 垂直领域的在线作图工具:那些可以替代Visio的应用!
  4. 嵌入式分享合集140
  5. dns与wins的区别
  6. 网页计算机(h5+js+css)
  7. Qt实现2048(4种模式)
  8. 【第1078期】前端之切切切切切图
  9. 【架构师修炼之路】Redis 极简教程 : 基本数据结构, 跳表原理, Spring Boot 项目使用实例
  10. 基于matlab的控制系统与仿真-4