Codeforces Round #743 (Div. 2) B

题目链接:Problem - B - Codeforces

 

目的:

找到满足ai<bj的最小的i+j-2 (index from 1 to n)

 

思路:

枚举会tle,考虑优化


对于每个ai,一定存在对应的bj满足ai<bj且i+j-2最小。这时bj只能取比ai大的偶数值。

 

因此,我们可以存每个值对应的id,先预处理出value<=x的最前的位置,可以在O(n)内更新答案。

 

code:

for(int i=1;i<=n;i++)cin>>a[i],p[a[i]]=i;
        for(int i=1;i<=n;i++)cin>>b[i],p[b[i]]=i;
        int ans=2*n;
        int j=2*n;
        for(int i=2*n;i>=1;i--){
            if(i%2==1) ans=min(ans,j+p[i]-2);  //j: <=i(出现过的)的最小位置
            else{
                j=min(j,p[i]);
            }    
        }
        cout<<ans<<endl;

 

posted @ 2021-09-22 09:34  starlightlmy  阅读(46)  评论(0)    收藏  举报