1045: [HAOI2008] 糖果传递 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1045 Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 小朋友个数n 下面n行 ai Output 求使所有人获得均等糖果的最小代价. Sample Input 4 1 2 5 4 Sample Output 4 Hint 100% n<=987654321…
1045: [HAOI2008] 糖果传递 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1812  Solved: 846[Submit][Status] Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 小朋友个数n 下面n行 ai Output 求使所有人获得均等糖果的最小代价. Sample Input 4 1 2 5 4 Sample Output 4…
题目链接:BZOJ 1045 Attention:数据范围中 n <= 10^5 ,实际数据范围比这要大,将数组开到 10^6 就没有问题了. 我们先来看一下下面的这个问题. 若 n 个人坐成一行,不围成圈,那么我们可以用 f[i] 来表示第 i 个人需要从第 i-1 个人那里获得多少个糖果.(这就是“均分纸牌”那道题) 当 f[i] < 0 时,表示第 i 个人需要给第 i-1 个人 | f[i] | 个糖果. 那么 f[i] = K - (A[i] - f[i+1]) ,其中 K 为平均分…
感觉我的智商可能不够写题解,就直接截了hzwer的blog 地址http://hzwer.com/2656.html #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=1000005; int n,a[N],c[N],p; long long sum,ans; int read() { int r=0,f=1; char p=getchar()…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1045 费用流TLE. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define ll long long using namespace std; ; const ll INF=1e15; ,pre[N]…
题意 有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为中位数时此值…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1045 好像是贪心...但这是一个环... 看博客:http://hzwer.com/2656.html 真是神奇的构造...还是应该大胆地先把各种变量都设出来再处理. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespa…
1045: [HAOI2008] 糖果传递 Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n<=987654321,表示小朋友的个数.接下来n行,每行一个整数ai,表示第i个小朋友得到的糖果的颗数. Output 求使所有人获得均等糖果的最小代价. Sample Input 4 1 2 5 4 Sample Output 4     [分析] 一道经典题. 设xi为i给i-1多少个糖果(负的…
http://www.lydsy.com/JudgeOnline/problem.php?id=1045 白书上有讲 没ac的坑点在,数据范围n<=1,000,000 #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <algorithm> #include <queue&…
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1.Input 小朋友个数n 下面n行 aiOutput 求使所有人获得均等糖果的最小代价.Sample Input41254 Sample Output4数据规模30% n<=1000100% n<=1000000 说难又不难,我对数学题没什么感觉啊 首先,均分纸牌都做过吧(什么,没做过!?百度NOIP2002均分纸牌) 这个只是环形而已,为了把它变成环形,我们要知道a1给了…