3 条题解
-
1linsirui LV 9 @ 2024-12-10 21:11:03
#include <bits/stdc++.h> const int N=1e4+10; using namespace std; int n,ans,sum; int a[N],b[N],f[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++){ sum=1; for(int j=1;j<=n;j++){ f[i][j]=f[i-1][j]; if(a[i]==b[j]){ f[i][j]=max(f[i][j],sum); } if(b[j]<a[i]) sum=max(sum,f[i][j]+1); } } for(int i=1;i<=n;i++){ ans=max(ans,f[n][i]); } cout<<ans; }
-
02023-12-17 16:10:41@
/************************************ Note Book: ************************************/ #include <iostream> #include <cstdio> #include <iomanip> #include <cmath> #include <algorithm> #include <cstring> #include <string> #include <stack> #include <queue> #include <math.h> #define LL long long using namespace std; const int INF = 0x3f3f3f3f; const int MAXN = 5010; int n , a[MAXN] , b[MAXN] , dp[MAXN] , maxn; 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++) { maxn = 0; for(int j = 1; j <= n; j++) { if(b[j] < a[i] && maxn < dp[j]) { maxn = dp[j]; } if(b[j] == a[i]) { dp[j] = maxn + 1; } } } maxn = 0; for(int i = 1 ; i <= n ; i++ ) { if(maxn < dp[i]) { maxn = dp[i]; } } cout << maxn; return 0; }
-
02023-10-1 13:53:21@
我知道你们没题解活不了
#include <bits/stdc++.h> using namespace std; const int maxn=3e3+10; int n,res; int a[maxn],b[maxn]; int f[maxn][maxn]; int maxv; 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++) { maxv=1; for(int j=1;j<=n;j++) { f[i][j]=f[i-1][j]; if(a[i]==b[j]) { f[i][j]=max(f[i][j],maxv); } if(b[j]<a[i]) maxv=max(maxv,f[i][j]+1); } } int res=0; for(int i=1;i<=n;i++) res=max(res,f[n][i]); cout<<res<<endl; return 0; }
- 1
信息
- ID
- 183
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 166
- 已通过
- 49
- 上传者