文章

166

粉丝

68

获赞

855

访问

60.2k

头像
南京理工-搬箱子 题解:STL经典问题
P1840 南京理工大学机试题
发布于2025年3月13日 11:23
阅读数 125

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    while(cin>>n){
        vector<int>a(n),dp(n,1);
        for(int i=0;i<n;i++)cin>>a[i];
        for(int i=1;i<n;i++){
            for(int j=0;j<i;j++){
                if(a[j]<a[i])dp[i]=max(dp[i],dp[j]+1);
            }
        }
        cout<<*max_element(dp.begin(),dp.end())<<endl;
    }
}

STL即最长增长子序列,这里要求绝对增长。这个问题的核心是理解dp的定义,dp中每一个数值都是从前到此的最大增长高度,所以我们采用遍历的方式去前面搜,算出来最大的即可。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发