题解 | 机器翻译
机器翻译
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;
}
