记录编号 165946 评测结果 AAAAAAAAAA
题目名称 迷之阶梯---加强版 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.141 s
提交时间 2015-06-13 15:25:02 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;
int f[501],a[501],n;
int sum(int h,int k)
{
	for(int i=1;i<=k-1;++i)
	  h*=2;
	return h;
}
int main()
{
    freopen("Stairs.in","r",stdin);
	freopen("Stairs.out","w",stdout);
	memset(f,25,sizeof(f));
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	   scanf("%d",&a[i]);
	f[1]=0;
	for(int i=2;i<=n;++i)
	 {
	  
		{
		 if(a[i]-a[i-1]==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(a[j]+sum(2,k-j)>=a[i])
			  if(f[i]>f[k]+k-j+1)
			   {
					f[i]=f[k]+k-j+1;
			   }
		}
		//cout<<f[i]<<" ";
	 }
	 if(f[n]>5000)
	  printf("-1");
	 else
	 printf("%d",f[n]);
	 //system("pause");
}