5 条题解

  • 0
    @ 2026-3-27 15:58:51
    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    const int LLINF = 0x3f3f3f3f3f3f3f3fLL;
    int a[N], b[N], dp[3010][3010];
    signed main(){
    	int n;
    	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 maxx = 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], maxx);
    			if(a[i] > b[j]) maxx = max(maxx, dp[i - 1][j] + 1);
    		}
    	}
    	int ans = 0;
    	for(int i = 1 ; i <= n ; i++){
    		ans = max(ans, dp[n][i]);
    	}
    	cout << ans << endl;
    	return 0;
    } 
    

    信息

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