5 条题解

  • 3
    @ 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;
    }
    
    
    • 2
      @ 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;
      }
      
      • 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;
        } 
        
        • 0
          @ 2023-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;
          }
          
          
          
          • -2
            @ 2023-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
            标签
            递交数
            287
            已通过
            86
            上传者