[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 inline int read(){
11     rx=getchar(),ra=0;
12     while(rx<‘0‘||rx>‘9‘)rx=getchar();
13     while(rx>=‘0‘&&rx<=‘9‘)ra*=10,ra+=rx-48,rx=getchar();return ra;
14 }
15 int main(){
16     ll sm,mx,mn;int pre,now;
17     n=read();pre=mn=sm=read(),mx=-(1<<30);
18     for(i=2;i<=n&&mx<=mn;i++){
19         now=read();
20         if(i&1)sm+=now-pre,mn=min(mn,sm);else sm+=pre-now,mx=max(mx,sm);
21 //      printf("  %lld  %lld    sm:%lld\n",mx,mn,sm);
22         pre=now;
23     }
24     if(mx>mn)puts("0");else printf("%lld\n",mn-mx+1);
25 }

时间: 2024-12-21 03:08:48

[bzoj1811] [Ioi2005]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

BZOJ 1811 IOI2005 mea

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

【BZOJ1811】【IOI2005】mea 平均数

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

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.

BZOJ1812: [Ioi2005]riv

1812: [Ioi2005]riv Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 523  Solved: 309[Submit][Status][Discuss] Description 几 乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进 了大海.这条大河的入海口处有一个村庄——名叫Bytetown 在Byteland国,有n个伐木的村庄,这些村庄

1812: [Ioi2005]riv

1812: [Ioi2005]riv Time Limit: 10 Sec Memory Limit: 64 MB Submit: 635 Solved: 388 [Submit][Status][Discuss] Description 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进了大海.这条大河的入海口处有一个村庄--名叫Bytetown 在Byteland国,有n个伐木的村庄,这些村庄都座

[Ioi2005]River

设f[i][j][k]表示i上游最近的一个伐木场为j且在i所在的子树里共建了k个伐木场(不包含在i的)的最小运费和 设v为u的儿子,dist[u]为u到0号点的距离. 则当i>=j时 f[u][last][i]=max{f[u][last][i-j]+dist[v][last][j]+w[v]*(dist[v]-dist[last])} 即在v不放伐木场 当i>j时 f[u][last][i]=max{f[u][last][i-j-1]+f[v][v][j]} 即在v放伐木场 code: #i

rivers ioi2005 树形dp

说句实话,写完这道题,很想吐一口血出来,以示我心情的糟糕: 题目很简单,树形dp,正常做30分钟,硬是做了好几个小时,真是伤心. 题解不写了,只是吐个槽,网上没有用背包写的dp,全是左儿子右兄弟写法,没法对照一下,难受啊. 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define LL long long 6 int n,K; 7 co

BZOJ 1811 IOI 2005 mea 乱搞

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