求助90分,第二个测试点错误?为啥
查看原帖
求助90分,第二个测试点错误?为啥
1122530
elpsconr楼主2024/5/23 23:19

不知道为啥第二个测试点出问题

#include <bits/stdc++.h>
using namespace std;
const int MAXX=100000+5;
const int INF=INT_MAX;

int dp[MAXX];
int a[MAXX],b[MAXX];

int main()
{
    int n;
    cin>>n;
        int v;
        for(int i=0; i<n; i++)
        {
            cin>>v;
            a[v]=i;//把a[i]映射到i
        }
        for(int i=0; i<n; i++)
        {
            cin>>v;
            b[i]=a[v];//把b数组按照a数组的映射规则进行映射
        }
       // for(int i=0; i<n; i++)
           // dp[i]=INF; //初始化

        int pos=0;    // 记录dp当前最后一位的下标
        //dp[0]=b[0];
        for(int i=0; i<n; i++)
        {
            if(b[i]>dp[pos])
                dp[++pos]=b[i];
            else
                dp[lower_bound(dp,dp+pos+1,b[i])-dp]=b[i];
        }
        //if(pos!=99999) 
        cout<<pos<<endl;
        //else cout<<100000<<endl;
    return 0;
}
2024/5/23 23:19
加载中...