当前位置: 首页 > news >正文

AcWing——糖果传递

有 n个小朋友坐成一圈,每人有 a[i]个糖果。

每人只能给左右两人传递糖果。

每人每次传递一个糖果代价为 1。

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

输入格式

第一行输入一个正整数 n,表示小朋友的个数。

接下来 n 行,每行一个整数 a[i],表示第 i个小朋友初始得到的糖果的颗数。

输出格式

输出一个整数,表示最小代价。

数据范围

1≤n≤1000000
0≤a[i]≤2×109
数据保证一定有解。

输入样例:

4
1
2
5
4

输出样例:

4

 题意:

ai向ai+1传递xi个通过(xi可正可负),求abs(x1)+abs(x2)+...+abs(xn)的最小值

分析:

一大堆数学证明我证不过来,所以直接给结论吧。

要求

|x1|+|x2|+...+|xn|最小值,

即求

|xn-b-a1|+|xn-2b-a1-a2|+|xn-nb-a1-a2-...-an|

将该问题转换为

货仓选址问题即可

#include <iostream>
#include <algorithm>using namespace std;
typedef long long ll;
const int N=1e6+10;
ll a[N],b,c[N];
int main(){int n;cin>>n;for(int i=1;i<=n;++i){cin>>a[i];b+=a[i];a[i]+=a[i-1];}b/=n;for(int i=1;i<=n;++i){c[i]=i*b-a[i];}sort(c+1,c+n+1);ll d=c[n/2+1];ll res=0;for(int i=1;i<=n;++i){res+=abs(c[i]-d);}cout<<res;return 0;
} 

http://www.lryc.cn/news/45865.html

相关文章:

  • Redis中的单线程模型
  • Python函数默认参数设置(超级详细)
  • 人工智能如何赋能业务创新?安克创新有话要说
  • 如何学习与学习的本质
  • C++ deque容器
  • HashMap的底层原理
  • Django 4.0文档学习(四)
  • 2023年全国最新高校辅导员精选真题及答案38
  • 和ChatGPT-4聊完后,我觉得一切可能已经来不及了
  • RocketMQ 5.1 NameServer 启动流程
  • 马云回国,首谈ChatGPT
  • 深入理解C++迭代器:让你的C++代码更加灵活
  • Java 读取Excel模板中的数据到实体类
  • 【java基础】Socket网络编程
  • 转发和重定向区别
  • java面试题(持续更新)
  • 【花雕学AI】09:发挥ChatGPT最大潜力——产生高质量内容的九种方法和建议
  • 实战打靶集锦-013-Loly
  • 程序员OKR学习法
  • 【从零开始学习 UVM】6.6、UVM 激励产生 —— UVM Virtual Sequence【重要】
  • 蓝桥杯:阶乘约数
  • 最大数字
  • 【java进阶08:异常】finally关键字、自定义异常类、用户业务作业、军队武器作业
  • #课程笔记# 电路与电子技术基础 课堂笔记 第6章 半导体器件的基本特性
  • skimage.filters.apply_hysteresis_threshold详解
  • 一、基础算法5:前缀和与差分 模板题+算法模板(前缀和,子矩阵的和,差分,差分矩阵)
  • Python矩阵分解之QR分解
  • 随机森林程序
  • 每日一练2627——变态跳台阶快到碗里来不用加减乘除做加法三角形
  • LeetCode-146. LRU 缓存