3 条题解

  • 1
    @ 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;
    }
    
    
    • 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;
      }
      
      
      
      • 0
        @ 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
        标签
        递交数
        165
        已通过
        48
        上传者