最长公共子序列

找出最长公共子序列:最长公共子序列 --- 把问题转换为求最长上升子序列 o(nlogn).

for(int i=1;i<=n;i++){   //对于数字
        cin>>x;
        mp[x]=i;
    }
    vector<int> vct;
    for(int i=1;i<=n;i++){
        cin>>x;
        if(vct.size()==0) vct.emplace_back(mp[x]);
        else{
            if(mp[x]>*vct.rbegin()) vct.emplace_back(mp[x]);
            else *lower_bound(vct.begin(),vct.end(),mp[x])=mp[x];
        }
    }
    cout<<vct.size()<<endl;

 

posted @ 2024-01-23 18:24  osir  阅读(1)  评论(0编辑  收藏  举报