50分求调,
查看原帖
50分求调,
1114798
suzakudry楼主2024/3/14 17:00
#include <bits/stdc++.h>
using namespace std;
int main(){
    map<int,bool> in;
    int m,n;cin>> m>> n;
    int a[n];
    for(auto &x:a)cin >> x;
    
    int t=n;//假设最差情况,要查n次,如果查的是内存里有的减一次。
    queue<int> b;//内存,存目前在内存的数。他们在map里的键都是true;
    
    for(int i=0;i<n;i++){
        if(in[a[i]]) t--;
        if(b.size()==m){
	     int x = b.front();
             b.pop();in[x]=false;
             b.push(a[i]);in[a[i]]=true;
        }
        if(b.size()<m) {
        if(!in[a[i]]) b.push(a[i]);  
        in[a[i]]=true;
        }
    }
    cout<<t;
}
2024/3/14 17:00
加载中...