记录编号 |
106464 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010冲刺十三]迷之阶梯 |
最终得分 |
100 |
用户昵称 |
ztx |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2014-06-14 15:42:32 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include <cstdio>
#define sig 107e7
int n,h[201],f[201] ;
int main()
{
freopen("ladder.in" ,"r",stdin ) ;
freopen("ladder.out","w",stdout) ;
scanf("%d",&n) ;
if (n == 1)
{
printf("0\n") ;
return 0 ;
}
for (int i = 0 ; i < n ; i ++ )
{
scanf("%d", &h[i]) ;
f[i] = sig ;
}
f[0] = 0 ;
for (int i = 1 ; i < n ; i ++ )
{
for (int j = i-1 ; j >= 0 ; j -- )
{
if (j == i-1 && h[j] == h[i]-1 ) f[i] = f[j]+1 ;
else
{
int t = 1 , step = -1 ;
while (step ++ , t < h[i] - h[j]) t *= 2 ;
if (step < i-j && f[i] > f[j+step]+step+1) f[i] = f[j+step]+step+1 ;
}
}
if (f[i] == sig)
{
printf("-1\n") ;
return 0 ;
}
}
printf("%d",f[n-1]) ;
//return 0 ;
}