bzoj1811 mea

Description

考虑一个非递减的整数序列 S1,....Sn+1(Si<=Si+1  1<=i<=n)。 序列M1...Mn是定义在序列S的基础上,关系式为 Mi=( Si + S(i+1) )/2, 1<=i<=n, 序列M叫做序列S的平均数序列。例如序列1,2,2,4的平均数序列为 1.5,2,3.注意到平均数序列中的元素可能为小数。但是本题的任务只是处理平均数序列都为整数的情况。 给出一个n个数字的非递减的整数序列M1,M2...Mn.请你计算出:序列S,S1...S(n+1)的平均序列是M1,...,Mn。 求满足以上条件的序列S的总个数。 任务: * 从标准输入文件中读入一个非递减的整数序列。 * 计算出平均序列是给出序列的整数序列的总个数。 * 把计算结果写到标准输出文件中。

Input

输入文件的第一行包含一个整数n(2<=n<=5 000 000).接下来的n行包含了这个给出的整数序列M1,..,Mn. 第i+1行包含一个整数Mi(1<=mi<=1000000000).对于本题,50%的测试数据中n<=1000,0<=Mi<=20000.

Output

输出文件仅一行,即所求答案。

将s[2..i+1]用s[1]表示

代入不等式组s[i]+s[i+1]=2*m[i]解出s[1]的取值范围

#include<cstdio>
const int N=5000005;
typedef long long i64;
inline int read(){
    register int x=0,c=getchar();
    while(c>57||c<48)c=getchar();
    while(c>47&&c<58)x=x*10+c-48,c=getchar();
    return x;
}
int b[N],n;
i64 a[N],mx=1ll<<61,mn=-(1ll<<61);
int main(){
    n=read();
    for(int i=1;i<=n;i++)b[i]=read();
    a[0]=0;
    for(int i=1;i<=n;i++)a[i]=b[i]-a[i-1];
    for(int i=0;i<n;i+=2){
        i64 x=a[i+1]-a[i];
        if(x<mx)mx=x;
    }
    for(int i=1;i<n;i+=2){
        i64 x=a[i]-a[i+1];
        if(x>mn)mn=x;
    }
    if(mx>=mn)printf("%lld",mx-mn+1);
    else puts("0");
    return 0;
}
时间: 2024-11-09 00:31:46

bzoj1811 mea的相关文章

【BZOJ1811】[Ioi2005]mea 乱搞

[BZOJ1811][Ioi2005]mea Description 考虑一个非递减的整数序列 S1,....Sn+1(Si<=Si+1 1<=i<=n). 序列M1...Mn是定义在序列S的基础上,关系式为 Mi=( Si + S(i+1) )/2, 1<=i<=n, 序列M叫做序列S的平均数序列.例如序列1,2,2,4的平均数序列为 1.5,2,3.注意到平均数序列中的元素可能为小数.但是本题的任务只是处理平均数序列都为整数的情况. 给出一个n个数字的非递减的整数序列M1

[bzoj1811] [Ioi2005]mea

还是比较好想到的..设第一个数为x,那么以后的所有数都能用x和M表示出来. 然后再根据非递减的限制条件得出x的取值范围. 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #define ll long long 5 using namespace std; 6 const int maxn=5002333; 7 int i,j,k,n,m; 8 9 int ra;char rx; 10 inli

【BZOJ1811】【IOI2005】mea 平均数

#include <stdio.h> int main() { puts("转载请注明出处谢谢"); puts("http://blog.csdn.net/vmurder/article/details/42970501"); } 题意:自己去看 题解: 我们把平均数序列看成一个线段,那么这个线段就被序列中的数分成了若干段. 然后在其中一段上选一个点,原序列应该是唯一的, [对应点:当前点+对应点/2=平均数序列中两段交界点] 所以它到下一段的对应点就是

BZOJ 1811 IOI2005 mea

题目大意:有一个单调不降整数序列,定义平均值数列为这个数列的相邻两项的平均值组成的序列,现在给定这个平均值序列,问原序列有多少种 这相当于给定了相邻两项之间的对称轴 那么我将这个数轴沿着这个对称轴折叠 相邻两项在数轴上就重合了 如果将整个数轴沿着所有的对称轴各折叠一次,所有的点就会重合于一点 此时所有对称轴组成的区间的交集大小就是解的数量 注意无解情况 500W的读入还真有人敢传... #include <cstdio> #include <cstring> #include &l

BZOJ 1811 IOI 2005 mea 乱搞

题目大意:给出一个序列中相邻两个的平均值,问有多少个序列可以满足这个性质. 思路:不难看出,只要确定了任意一个数字,整个序列就是确定的.我们设第一个值为k,那么后面的值都可以用表达式表示.然后做一下差分,保证每一项>0,就可以确定k的范围,每一个k值对应一个序列. CODE: #define _CRT_SECURE_NO_DEPRECATE #include <cmath> #include <cstdio> #include <cstring> #include

靥疚终芽俗ht2669r3umjxtnd9r8b8

"难怪,她天天不在医院,也不在家里!能够在青龙"难道真的进了大盗了?"足足半个小时后,杜晨已经是满头大汗,脚下甚至有些虚脱,站都有些站不稳了.杜晨蹙起了眉头,有些不敢相信.自己这个师姐怎么就成了军人,而且竟然还是一个大校!她不是明杭第一人民医院的急救科主任么?"还用你说!整个医院除了我,谁能控制董小姐的病情?"刘尘远面色阴沉又看了一眼杜晨,但却不敢耽误,连忙小跑着走了,看样子他很在乎这个病人."大-大--大哥,我,我不是故意要杀你的.刚才那-那纯

坌脱信臆运j6v4y3lkx32c6

他却不知道就在此时,昨天经过他的治疗已经有所好转的董璃,此刻却再度发病了.众多医生护士竟是一下子愣住了,抛开之前杜晨的强势不说,他分明是个土得掉渣,看起来穷困潦倒的人,居然会有这么多金子!第十二章准备后事吧"他,老不死的居然把这个也给你了!他太偏心了!"林英男的声音都变了.与整个房间整整齐齐的格局不同.小莲赶紧上来替他擦了一把汗,低声问道:"杜医生,董小姐好了么?怎么还没有醒过来?"第十六章林英男的双重身份刘尘远一边低声笑道,眼睛却死死的盯着董璃警服下那美妙的身躯.

在学校在现在在线搜索在在在

ZVE WAA UIZ BFW IMH XGB KVI NPT VER TWQ HJW OFS NWL RKL EXZ VUQ RCP SMB HIW IBX IJO CMA IIQ SJN NXS PES UGI WZM NPB WYJ VFA YYR WZV TUU RCH WID OQS IUQ HGK NER XIE WEJ WOM RDH AMZ ORE AUH QAN YTN KMO JUY KFB UXL ARV BUS KTY IRM FYD YLG CTO MXV YGA MO

在学校自主选择琐琐碎碎

ZVE WAA UIZ BFW IMH XGB KVI NPT VER TWQ HJW OFS NWL RKL EXZ VUQ RCP SMB HIW IBX IJO CMA IIQ SJN NXS PES UGI WZM NPB WYJ VFA YYR WZV TUU RCH WID OQS IUQ HGK NER XIE WEJ WOM RDH AMZ ORE AUH QAN YTN KMO JUY KFB UXL ARV BUS KTY IRM FYD YLG CTO MXV YGA MO