1045: [HAOI2008] 糖果传递
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2975 Solved: 1327
[Submit][Status][Discuss]

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

Input
小朋友个数n 下面n行 ai

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

Sample Input
4
1
2
5
4

Sample Output
4

HINT
100% n<=987654321
(这个数据范围加了特技,真实范围n<=1000000,Duang)

数学题,可以说是**均分纸牌**的环状问题
首先数组get【i】表示第i个小朋友从第i+1个小朋友那里得到的糖果,可正可负
所以也可以表示第i+1个小朋友给第i个小朋友的糖果,即第i+1个小朋友失去的数量

所以我们不难得出:
candy【i】+get【i】-get【i-1】=pj(平均)
这一步并不足以求解
所以移项可得:
get【i】=pj-candy【i】+get【i-1】
上述式子可以推出get的值,那么问题在于从哪里开始最小
问题为圆环,最小想到距离,距离想到中位!!
于是…..A之

代码精炼至极:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;#define maxn 1000002
long long candy[maxn]={0};
long long get[maxn]={0};int main()
{int n;long long sum=0,pj=0;long long ans=0;scanf("%d",&n);for (long long i=1; i<=n; i++){scanf("%d",&candy[i]);sum+=candy[i];}pj=sum/n;for (long long i=1; i<=n; i++)get[i]=get[i-1]+pj-candy[i];sort(get+1,get+n+1);long long mid=get[(1+n)/2];for (long long i=1; i<=n; i++)ans+=fabs(mid-get[i]);  printf("%lld",ans);return 0;
}

转载于:https://www.cnblogs.com/DaD3zZ-Beyonder/p/5346249.html

BZOJ-1045 糖果传递 数学+递推相关推荐

  1. #10010 「一本通 1.1 练习 6」糖果传递 (数学+贪心)

    题目描述 原题来自:HAOI 2008 有 n个小朋友坐成一圈,每人有 ai 颗糖果.每人只能给左右两人传递糖果.每人每次传递一颗糖果的代价为 1 .求使所有人获得均等糖果的最小代价. 输入格式 第一 ...

  2. [Leetcode][第1025题][JAVA][除数博弈][数学][递推]

    [问题描述][中等] [解答思路] 1. 数学证明 找规律 时间复杂度:O(1) 空间复杂度:O(1) 2. 递推 时间复杂度:O(N) 空间复杂度:O(1) class Solution {publ ...

  3. 2013-11-09 实验之买不到的糖果数目(递推思维+思维逻辑题)

    题目:标题:买不到的数目     小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖.     小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合 ...

  4. HDU-4278 Faulty Odometer 数学递推 || 八进制

    题意 这个里程表当走到3或8的时候就会跳过 给我们这个里程表上显示的数字 让我们求这个里程表的真实数据是多少 分析 由于 3 和 8 不存在 那么就相当于一个八进制数 但是这个八进制中3 是写作4 8 ...

  5. BZOJ 3329: Xorequ(数位dp+递推)

    传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考 ...

  6. 剑指 Offer 10- II. 青蛙跳台阶问题 -递归法和数学递推法

    剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007), ...

  7. 约瑟夫环问题(数学递推法)

    约瑟夫环问题起源于一个犹太故事: 罗马人攻占了桥塔帕特,41个人藏在一个山洞中躲过了这场浩劫.这41个人中,包括历史学家Josephus(约瑟夫)和他的一个朋友.剩余的39个人为了表示不向罗马人屈服, ...

  8. BZOJ 3823 定情信物 递推

    题目大意:定义点为零维元素,线为一维元素,面为二维元素,空间为三维元素,以此类推,求n维立方体中各维元素都有多少 令f[i][j]为i维立方体内j维元素的个数 考虑n维立方体中的i维元素,将n维立方体 ...

  9. 【牛客网】牛客练习赛19 F 算式子【数学--递推 、前缀、数字】

    传送门:算式子 花了一些时间理解AC的代码,震惊,代码真的是短小精悍,推理能力很强亦或者是做题多,见的多. 能够理解里面的逻辑真的挺难的 题意 给定n,m,\(1\le x\le m\),求\(\su ...

最新文章

  1. Bootstrap部分---环境安装及一个可视化的布局;
  2. C#数据结构与算法揭秘15
  3. 73. 解决ExtJS TreePanel 的 iconCls设置问题
  4. oracle中怎样查询用户权限
  5. 小小知识点(十五)——origin pro 2018 安装和消除demo字样
  6. 数据结构与算法-数组
  7. 【招聘(深圳)】迈瑞招.NET 开发Leader和PM
  8. JavaSE02、方法,递归迭代
  9. 系统集成资质培训 - 论文:论项目的人力资源管理
  10. 一款短小精悍的日志分析工具web_log_analyse
  11. C++ 对象的内存布局【转】
  12. 解决安装WordCloud出错
  13. 一位老电子工程师的十年职场感悟
  14. 500强企业校园招聘经典面试问题汇编
  15. 华为OSN3500与路由器混合组网
  16. oracle golden gate 价格,Oracle GoldenGate
  17. python 英语拼写-Python实现单词拼写检查
  18. UI设计:模仿淘宝App首页
  19. s3c24xx的时钟初始化
  20. fcpx插件:童年印象回忆复古视觉特效和转场Stupid Raisins Slide Pop

热门文章

  1. 无法创建Web Application项目的问题
  2. 记asp.net VB与C# 页面参数传值
  3. 打造完美的JS树形菜单
  4. Centos下使用Docker部署asp.net core项目
  5. centos6.x安装mysql5.6及启动多实例
  6. 移动端省际联动插件mobiscroll
  7. IE8下 Select文字垂直居中的办法
  8. 传奇的诞生,PHP三位创始人简介
  9. C#中结构数据类型的使用
  10. Hadoop中Writable和WritableComparable区别