记录编号 47178 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十三]迷之阶梯 最终得分 100
用户昵称 Gravatar临轩听雨ゐ 是否通过 通过
代码语言 C++ 运行时间 0.014 s
提交时间 2012-10-31 08:56:32 内存使用 3.28 MiB
显示代码纯文本
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cstdio>
#include <cmath>
using namespace std;
ifstream in("ladder.in");
ofstream out("ladder.out");
int main()
{
    int n;
    int tmp;
    int h[201]={0},f[201]={0};
    int t[32]={0};
    in>>n;
    t[0]=1;
    for(int i=1;i<=30;i++)
        t[i]=t[i-1]*2;
    for(int i=1;i<=n;i++)
        in>>h[i];
    for(int i=2;i<=n;i++)
    {
		f[i]=10000000;
        if(h[i]==h[i-1]+1)
            f[i]=f[i-1]+1;
        for(int j=1;j<=i-1;j++)
        {
            if(j>31) tmp=j-30;
            else tmp=1;
            for(int k=tmp;k<=j-1;k++)
                if((h[k]+t[j-k]>=h[i])&&(f[i]>f[j]+j-k+1))
                    f[i]=f[j]+j-k+1;
        }
    }
    if(f[n]<=10000000)  out<<f[n];
    else out<<-1;
    return 0;
}