记录编号 47564 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十三]迷之阶梯 最终得分 100
用户昵称 Gravatarsong 是否通过 通过
代码语言 C++ 运行时间 0.007 s
提交时间 2012-11-02 00:08:40 内存使用 2.83 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n,ni[250]={0},b[250]={0};
int main()
{
	freopen("ladder.in","r",stdin);
	freopen("ladder.out","w",stdout);
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>ni[i];
		b[i]=10000;
	}
	b[0]=0;
	for(int i=1;i<n;i++)
	{
		for(int j=i-1;j>=0;j--)
		{
			if(j==i-1&&ni[j]==ni[i]-1)
			{
				b[i]=b[j]+1;
			}
			else
			{
				int k=1,m=0;
				while(k<ni[i]-ni[j])
				{
					k=k*2;
					m++;
				}
				if(m<=i-j-1&&b[i]>b[j+m]+m+1)
				{
					b[i]=b[j+m]+m+1;
				}
			}
		}
		if(b[i]==10000)
		{
			cout<<-1;
			return 0;
		}
	}
	if(b[n-1]==10000)
		cout<<-1;
	else
	    cout<<b[n-1];
}