ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode 1014 Best Sightseeing Pair DP

2022-05-22 03:00:44  阅读:199  来源: 互联网

标签:int max spots 1014 values dp Pair Best sightseeing


You are given an integer array values where values[i] represents the value of the ith sightseeing spot. Two sightseeing spots i and j have a distance j - i between them.

The score of a pair (i < j) of sightseeing spots is values[i] + values[j] + i - j: the sum of the values of the sightseeing spots, minus the distance between them.

Return the maximum score of a pair of sightseeing spots.

Solution

设 \(dp[j]\) 表示以 \(j\) 结尾的答案,转移方程:

\[dp[j] = \max_i(v[i]+v[j]+i-j)=v[j]-j+\max_i(v[i]+i) \]

因此只需要维护每个位置结尾的 \(\max_i(v[i]+i)\)

点击查看代码
class Solution {
private:
    int dp[50004];
    int MAX = -1;
    int add[50004];
public:
    int maxScoreSightseeingPair(vector<int>& values) {
        int n = values.size();
        if(n==2){return values[0]+values[1]-1;}
        for(int i=0;i<n;i++){
            if(i==0)add[i] = values[i]+i;
            else{
                add[i] = max(add[i-1],values[i]+i);
            }
        }
        
            // dp[j] = max_i(values[i]+values[j]+i-j)
            //       = values[j]-j+max_i(values[i]+i)
        for(int j=1;j<n;j++){
                dp[j] = values[j]-j+add[j-1];
                MAX = max(MAX, dp[j]);
        }
        return MAX;
        
    }
};

标签:int,max,spots,1014,values,dp,Pair,Best,sightseeing
来源: https://www.cnblogs.com/xinyu04/p/16296806.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有