bzoj1045题解
【解题思路】
(数据范围劝退?正确范围应该是n≤1000000)
设xi表示第i个小朋友给第i+1个小朋友的糖果数(特殊的,xn表示第n个小朋友给第1个小朋友的糖果数),Â表示平均糖果数,有如下方程组:
•ai-xi+xi-1=Â(i∈[2,n]∩N)
•a1-x1+xn=Â
于是可整理为:
•x2=a1+x1-Â
•x3=a2+x2-Â=a1+a2+x1-2Â
...
•xn=an-1+xn-1-Â=...=a1+a2+...+an-1+x1-(n-1)Â
设sn=nÂ-∑ai(i∈[1,n]∩N),可整理为:
•x2=x1-s1
•x3=x1-s2
...
•xn=x1-sn-1
而答案表达式为∑|xi|(i∈[1,n]∩N),展开即|x1|+∑|x1-si-1|(i∈[2,n]∩N),显然达到最小值时x1值为所有si及0的中位数。复杂度O(nlog2n)。
【参考代码】
#pragma GCC optimize(2)
#include <algorithm>
#include <cstdio>
#define REP(i,low,high) for(register int i=(low);i<=(high);i++)
using namespace std;
static int n; long long a[],s[];
int main()
{
scanf("%d",&n);
long long ave=0ll; REP(i,,n) scanf("%lld",a+i),ave+=a[i];
ave/=n,s[n]=0ll; REP(i,,n-) s[i]=s[i-]+a[i]-ave; sort(s+,s+n+);
long long m=n&?s[n+>>]:s[n>>]+s[n+>>]>>,ans=0ll;
REP(i,,n) ans+=llabs(m-s[i]); return printf("%lld\n",ans),;
}
bzoj1045题解的更多相关文章
- LG2512/BZOJ1045 「HAOI2008」糖果传递 中位数
问题描述 LG2512 BZOJ1045 题解 这是一个链状问题的环状版本. 问题最终变为给定数轴上的\(n\)个点,找出一个到他们的距离之和尽量小的点,而这个点就是这些数中的中位数. 网络流24题的 ...
- 【BZOJ1045】[HAOI2008]糖果传递
[BZOJ1045][HAOI2008]糖果传递 题面 bzoj 洛谷 题解 根据题意,我们可以很容易地知道最后每个人的糖果数\(ave\) 设第\(i\)个人给第\(i-1\)个人\(X_i\)个糖 ...
- 【BZOJ1045】糖果传递(贪心)
[BZOJ1045]糖果传递(贪心) 题面 BZOJ 洛谷 题解 秉承者娱乐精神,我们必须写一个费用流,并且相信信仰跑不过去. 于是写了一个\(zkw\)费用流如下:(您可以无视此份代码) #incl ...
- 【BZOJ1045】[HAOI2008] 糖果传递 贪心
[BZOJ1045][HAOI2008] 糖果传递 Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正 ...
- HAOI2008题解
又来写题解辣-然而并不太清楚题目排列情况...不管辣先写起来- T1:[bzoj1041] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1 ...
- (洛谷P2512||bzoj1045) [HAOI2008]糖果传递 || 洛谷P4016 负载平衡问题 || UVA11300 Spreading the Wealth || (洛谷P3156||bzoj3293) [CQOI2011]分金币
bzoj1045 洛谷P4016 洛谷P2512 bzoj3293 洛谷P3156 题解:https://www.luogu.org/blog/LittleRewriter/solution-p251 ...
- BZOJ1045: [HAOI2008]糖果传递&BZOJ1465: 糖果传递&BZOJ3293: [Cqoi2011]分金币
[传送门:BZOJ1045&BZOJ1465&BZOJ3293] 简要题意: 给出n个数,每个数每次可以-1使得左边或者右边的数+1,代价为1,求出使得这n个数相等的最小代价 题解: ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
随机推荐
- Tmux 简单配置使用
Tmux Prefix (prefix) Tmux 使用 Prefix 以将自身的快捷键与其它应用区分,运行 Tmux 快捷键时首先按下这个 Prefix (默认是 Ctrl-b 组合键),松手后紧接 ...
- spring 新建mybatis ...
一. 创建bean类 package com.feilong.blog.dao; public class Message { private int id; private String autho ...
- c# 通过地址下载流然后保存文件到本地
1.下载文件并保存文件到本地 private void GetFileFromNetUrl(string url) { try { System.Net.WebRequest req = System ...
- Java之有名内部类和匿名内部类
Java内部类 定义在外部类中的类就是内部类:内部类的定义是为了更清楚.详细地描述事物. 有名内部类和匿名内部类 Java语言根据内部类是否有类名将内部类分为有名内部类和匿名内部类(没有类名). 有名 ...
- 数据结构(c语言版,严蔚敏)第1章绪论
第1章严蔚敏
- K8S集群安装部署
K8S集群安装部署 参考地址:https://www.cnblogs.com/xkops/p/6169034.html 1. 确保系统已经安装epel-release源 # yum -y inst ...
- Android中的RelativeLayout中组件的排放问题
今天想仿照新浪微博的用户中心 主要就是那个头像的问题,这个看到就想到用相对布局,现在是我想把那个名称放到头像的上面去xml中定义如下: <RelativeLayout android:layou ...
- 思维+贪心——cf1042D
/* 首先考虑从后往前计算lis,显然0的在很多情况下的贡献要大于1 如果遇上0,那么lis++,如果遇上1,那么cnt1++,并且用cnt1更新lis 这样的贪心保证正确,因为从[i,j]这一段的l ...
- 微信中location.reload失效
var len = window.location.href.indexOf("?"); if(len>0){ window.location.href=window ...
- python excel单元格及样式
python excel单元格及样式: #!/usr/bin/env python # -*- coding: utf-8 -*-” #只对当前文件的中文编码有效 # Filename : Write ...