题解 | 机器翻译

机器翻译

https://www.nowcoder.com/practice/45ecfecd83104f37a685016361be504c

#include <bits/stdc++.h>

using namespace std;

using ll=long long;

#define endl '\n'

using vi=vector<int>;

using vll=vector<ll>;

using pqi=priority_queue<int>;

using pqll=priority_queue<ll>;

using qi=queue<int>;

typedef pair<int,int> pii;

using vpii=vector<pii>;

const int MOD=998244353;

int main(){

    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

    int m,n;cin>>m>>n;

    qi a;

    unordered_set<int> jiancha;//记录队列里的元素

    int miss=0;

    for(int i=0;i<n;i++){

        int x;cin>>x;

        if(jiancha.find(x)!=jiancha.end()) continue;//如果队列里有这个元素,直接进行下一次

        miss++;//否则miss++

        if(a.size()==m){ //当队列元素等于原定的大小m

            int old=a.front(); //先保存原来的队首,目的是把unset里用来检查而存进去的队列原来的队首元素删除

            a.pop();

            jiancha.erase(old);

        }

        a.push(x);//将本次输入的元素入队

        jiancha.insert(x);//将该元素插入用于检查的unset

       

    }  

    cout<<miss<<endl;

    return 0;

}

全部评论

相关推荐

对空六翼:你真幸运,碰见这么好的人,不像我,秋招的时候被室友骗进cx了
实习好累,可以辞职全力准...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务