古老的牛市,遗迹的天梯

古老的牛市,遗迹的天梯

https://ac.nowcoder.com/acm/contest/5968/A

dp[i]表示到达第i级台阶所需的步数;
判断是否有解的时候,那个数值要大一点。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=500;
const int inf=0x3f;
int n,dp[maxn],height[maxn];
signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>height[i];
    memset(dp,inf,sizeof(dp));dp[1]=0;
    for(int i=1;i<=n;i++)
    {
       if(height[i+1]-height[i]==1) dp[i+1]=min(dp[i+1],dp[i]+1);//第一种,如果相邻两个==1,则可以直接上一台阶
       dp[i-1]=min(dp[i-1],dp[i]+1);//第二种情况
       for(int k=1;k<i;k++)//第三种情况,枚举退的步数
       {
           int h=(1<<k)+height[i-k];//最大高度
           for(int j=i-k;height[j]<=h&&j<=n;j++)//height<h的数
           {
                dp[j]=min(dp[i]+1+k,dp[j]);
           }
       }
    }
    if(dp[n]>=1e8) cout<<-1;
    else cout<<dp[n];
}
全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
2025-12-15 12:50
河北工程大学
sta666:我也是这个国际商业化的,三天,一天一面,就通过了,不过我是后端实习生,好好面感觉能过。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务