1 条题解

  • 0
    @ 2023-3-13 11:53:09

    C++ :

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int a[100001],b[100001],map[100001],f[100001];
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){scanf("%d",&a[i]);map[a[i]]=i;}
        for(int i=1;i<=n;i++){scanf("%d",&b[i]);f[i]=0x7fffffff;}
        int len=0;
        f[0]=0;
        for(int i=1;i<=n;i++)
        {
            int l=0,r=len,mid;
            if(map[b[i]]>f[len])f[++len]=map[b[i]];
            else 
            {
            while(l<r)
            {   
                mid=(l+r)/2;
                if(f[mid]>map[b[i]])r=mid;
                else l=mid+1; 
            }
            f[l]=min(map[b[i]],f[l]);
            }
        }
        cout<<len;
        return 0;
    }
    
    • 1

    信息

    ID
    1878
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者