社区讨论

90分,第一个点WA了,求大佬查错

P1929迷之阶梯参与者 3已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@mi6ziuty
此快照首次捕获于
2025/11/20 13:22
4 个月前
此快照最后确认于
2025/11/20 13:22
4 个月前
查看原帖
CPP
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll inf=0x2fffffffffffffff;
ll a[2005],f[2005],n;

inline ll poww(ll h)
{
    ll sum=1,i,ans=0;
    while(h>sum)
    {
        sum*=2;
        ans++;
    }
    return ans;
}
int main()
{
    //freopen("cs.in","r",stdin);
    int i,h,s,j,k,p;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        f[i]=inf;
    }
    f[1]=0;
    for(i=2;i<=n;i++)
    {//cout<<"(i)"<<i<<endl;
        //for(int q=1;q<=n;q++)cout<<f[q]<<" ";cout<<endl;
        if(a[i]-a[i-1]==1)
        f[i]=f[i-1]+1;
        h=poww(a[i]);
        s=1;p=0;
        for(j=1;j<=h;j++)
        {
            s*=2;//cout<<"*"<<s<<"  *";
            for(k=1;k<i;k++)
            {
                if(a[k]>=a[i]-s)
                {
                p=k;
                if(p+j<=n)
                f[i]=min(f[i],f[p+j]+j+1);
                }
            }
            //cout<<"*p"<<p<<"  *"<<endl;
        }
        //for(int q=1;q<=n;q++)cout<<f[q]<<" ";cout<<endl;cout<<endl;
    }
    if(f[n]==inf)cout<<-1;
    else cout<<f[n];
    return 0; 
}

回复

7 条回复,欢迎继续交流。

正在加载回复...