4 条题解

  • 1
    @ 2025-11-2 20:23:23
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e4 + 10;
    const int INF = 0x3f3f3f3f;
    int n;
    int a[N],b[N];
    int dp[N][N];
    int main(){
        cin >> n;
        for(int i = 1;i <= n;i++){
        	cin >> a[i];
    	}
        for(int i = 1;i <= n;i++){
        	cin >> b[i];
    	}
        for(int i = 1;i <= n;i++){
            int sum = 1;
            for(int j = 1;j <= n;j++){
                dp[i][j] = dp[i - 1][j];  
                if(a[i] == b[j]){
                    dp[i][j] = max(dp[i][j],sum);
                }
                if(a[i] > b[j]){
                    sum = max(sum,dp[i][j] + 1);
    			}  
            }
        }
        int nmax = -INF;
        for(int i = 1;i <= n;i++){
        	nmax = max(nmax,dp[n][i]);
    	}
        cout << nmax;
    }
    

    信息

    ID
    183
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    247
    已通过
    73
    上传者