码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 1811 IOI2005 mea

时间:2015-01-22 09:27:56      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:bzoj   bzoj1811   ioi2005   

题目大意:有一个单调不降整数序列,定义平均值数列为这个数列的相邻两项的平均值组成的序列,现在给定这个平均值序列,问原序列有多少种

这相当于给定了相邻两项之间的对称轴 那么我将这个数轴沿着这个对称轴折叠 相邻两项在数轴上就重合了

如果将整个数轴沿着所有的对称轴各折叠一次,所有的点就会重合于一点 此时所有对称轴组成的区间的交集大小就是解的数量

注意无解情况

500W的读入还真有人敢传。。。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 5005005
using namespace std;
int n,L=-0x3f3f3f3f,R=0x3f3f3f3f,a[M];
int main()
{
	int i,l=0,r=0;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		if(i&1)
		{
			r=l+(a[i]-a[i-1]);
			R=min(R,r);
		}
		else
		{
			l=r-(a[i]-a[i-1]);
			L=max(L,l);
		}
	}
	cout<<(L>R?0:R-L+1)<<endl;
	return 0;
}


BZOJ 1811 IOI2005 mea

标签:bzoj   bzoj1811   ioi2005   

原文地址:http://blog.csdn.net/popoqqq/article/details/43014529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!