5 条题解
-
0
#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
- 上传者