codeforces-B. Balanced Tunnel

题目传送门
题意:
问你n辆车通过一个桥洞,等全部通过桥洞后有多少辆车超过进洞之前在自己前面的车。

解题思路:
每辆车都有自己的标记,那么先将进洞的顺序(从小到大)记录,而每辆车对应出洞的的顺序也重新记录。那么再比较它们的标记。
比如
进 汽车: 3 5 2 1 4
进 顺序 :1 2 3 4 5
出 汽车: 4 3 2 5 1
出 顺序:5 1 3 2 4
那么 超出的序好就是 5 3 而1 2 4 是按 从小到大的顺序的。
或者说你也可以这么理解: 按照进入的顺序如果比车 与比该车之前进去的车 出来的早,那么车a就超车了。
所以我们记录每个车出来的顺序,按进入的顺序进行遍历车,并记录前面的车最晚出去的顺序,如果该车出去的顺序 比最晚的早,那么该车就超车了。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<math.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
const int MM=1e6+5;
using namespace std;
int a[MM],b[MM],out[MM],to[MM];
int main()
{
   
    int t;
    scanf("%d",&t);
    for(int i=0; i<t; i++)
    {
   
        scanf("%d",a+i);
        to[a[i]]=i;
    }
    for(int i=0; i<t; i++)
    {
   
        scanf("%d",b+i);
        int ps=to[b[i]];
        out[ps]=i;
    }
    int sum=0;
    int maxx=-2;
    for(int i=0; i<t; i++)
    {
   
        if(out[i]<=maxx)
            sum++;
        maxx=max(out[i],maxx);
    }
    cout<<sum<<endl;
    return 0;
}

全部评论

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务