1 solutions

  • 0
    @ 2025-1-18 16:52:51

    本题需要用到队列和map

    map<int, bool>vis;
    int q[1000005];
    int head=1, tail=0;
    

    定义基本变量

    void push(int x){
        tail++;
        q[tail]=x;
    }
    void pop(){
        head++;
    }
    

    队列函数

    
        int n, m;
        cin >> m >> n;
        int cnt=0;
    

    输入,定义

        for(int i = 0;i <= n;i++){
            int a;
            cin >> a;
            if(!vis[a]){//如果没有在内存中
                cnt++;//答案++
                push(a);//将a加入答案队列中
                vis[a]=true;//标记
                if(tail-head+1>m){//如果溢出
                    vis[q[head]]=false;//尾部标记推出
                    pop();//pop
                }
            }
        }
        cout << cnt;
    
    
    • 1

    Information

    ID
    886
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    9
    Tags
    (None)
    # Submissions
    16
    Accepted
    3
    Uploaded By