首页 > 其他分享 >跳跳跳

跳跳跳

时间:2023-04-24 22:24:42浏览次数:34  
标签:arr 4050 跳跳 ac int dp

  • 设dp[i][j]表示跳完这一段的最大值,考虑状态转移,由于每次只能向右跳或者向左跳,且跳跃次数即为区间的长度
  • dp[i][j] = max(dp[i-1][j]+(j-i+1) * arr[i],dp[i][j-1]+(j-i+1) * arr[j]);

https://ac.nowcoder.com/acm/contest/24213/1061

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n;
int arr[4050];
int dp[4050][4050];
int main(){
    cin>>n;
    for(int i = 1;i<=n;i++) cin>>arr[i],arr[i+n] = arr[i];
    for(int i = 1;i<=n*2;i++) dp[i][i] = arr[i];
    //跳跃次数即为右区间减左区间加一
    for(int len = 2;len<=n;len++){
        for(int i = 1;i<=2*n&&i+len-1<=2*n;i++){
            int j = i+len-1;
            dp[i][j] = max(dp[i+1][j]+(j-i+1)*arr[i],dp[i][j-1]+(j-i+1)*arr[j]);
        }
    }
    int ans = -1;
   // cout<<dp[3][5]<<endl;
    for(int i = 1;i<=n;i++){
        ans = max(ans,dp[i][i+n-1]);
    }
    cout<<ans;
}

标签:arr,4050,跳跳,ac,int,dp
From: https://www.cnblogs.com/wujw11world/p/17351150.html

相关文章

  • 解题报告-跳跳棋
    跳跳棋是在一条数轴上进行的。棋子只能摆在整点上。每个点不能摆超过一个棋子。我们用跳跳棋来做一个简单的游戏:棋盘上有三颗棋子,分别在\(a,b,c\)这三个位置。我们要通过......
  • nove.12 跳跳
    跳跳以为是个最长路,结果是个贪心高度排序,然后每次跳高度差最大的点即可网上找了个证明,想法很好但是没说清楚,应该是这样的:要证明每次跳高度差最大的点最优,那么证明其中......
  • 问题 H: 超级跳跳跳1281
    这道题其实本身有点超纲,有点涉及动态规划的内容了,即求最大上升子序列的最大的和写不出来很正常,不用觉得自己菜哈哈哈哈哈,实在不彳亍跳过也是可以的,那我就直接放代码了......
  • 【软件更新】系统激活、硬盘检测、XMind、IDM、万兴PDF、李跳跳、SpeedTest、Ventoy、
    今天照例给大家更新一下之前发过的软件到新版本。大家可以打开每个软件下的链接查看,或者在公众号后台回复相应的关键词获取百度网盘和蓝奏云的下载链接。Windows和Office激......
  • NC227595 跳跳跳
    题目链接题目题目描述dd在玩跳格子游戏,具体游戏规则如下,\(n\)个格子呈环形分布,顺时针方向分别标号为\(1\simn\),其中\(1\)和\(n\)相邻,每个格子上都有一个正整数......