记录编号 165764 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十三]迷之阶梯 最终得分 100
用户昵称 Gravatarlenibomb 是否通过 通过
代码语言 C++ 运行时间 0.031 s
提交时间 2015-06-12 20:58:12 内存使用 0.30 MiB
显示代码纯文本
#include<cstdio>
//#include<iostream>
using namespace std;
inline int in();
long long n,h[250];
long long f[250];
long long min(long long a,long long b)
{
	return a<b?a:b;
}
int main()
{
	freopen("ladder.in","r",stdin);
	freopen("ladder.out","w",stdout);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
	{
		//printf("%d\n",1<<i);
		scanf("%lld",&h[i]);
		f[i]=0xfffffff;
	}
	f[1]=0;
	for(int i=2;i<=n;i++)
	{
		if(h[i]-1==h[i-1])
		{
			f[i]=min(f[i],f[i-1]+1);
		}
		for(int j=1;j<i;j++)
		{
			for(int k=j+1;k<i;k++)
			{
				if(k-j>=31)
				f[i]=min(f[i],f[k]+k-j+1);
				else
				{
					long long  o=1<<(k-j);
					if(h[i]<=(h[j]+o))
					{
                    
						f[i]=min(f[i],f[k]+k-j+1);
					}
				}
			}
		}
	}
	if(f[n]==0xfffffff)
	{
		printf("-1");
	}
	else
	printf("%lld",f[n]);
	//while(1);
}