其他分享
首页 > 其他分享> > 最长上升子序列【模板】

最长上升子序列【模板】

作者:互联网

 

P1439 【模板】最长公共子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<iostream>
using namespace std;
int dp[1001][1001],a1[2001],a2[2001],n,m;
int main()
{
   cin>>n>>m;
   for(int i=1;i<=n;i++)scanf("%d",&a1[i]);
   for(int i=1;i<=m;i++)scanf("%d",&a2[i]);
   for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
     {
     	dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
     	if(a1[i]==a2[j])
     	dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
     }
   cout<<dp[n][m];
}
#include <bits/stdc++.h>
using namespace std;
#define N 1e5
#define INF 2e9
#define MAX 1000000
// https://www.luogu.com.cn/problem/P1439
int n;
int mapp[MAX], ans[MAX];
int main()
{
    cin >> n;
    for (int i = 1, t; i <= n; i++)
    {
        scanf("%d", &t);
        mapp[t] = i;
    }
    memset(ans, 0x3f3f3f, sizeof(ans));
    for (int i = 1, t; i <= n; i++)
    {
        scanf("%d", &t);
        t = mapp[t];
        *lower_bound(ans + 1, ans + n + 1, t) = t;
    }
    printf("%d", lower_bound(ans + 1, ans + n + 1, ans[0]) - ans - 1);
}

 

标签:int,MAX,序列,上升,最长,模板,define
来源: https://www.cnblogs.com/Wang-Xianyi/p/16632649.html