2019-05-14 P1540

题目链接:https://www.luogu.org/problemnew/show/P1540

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
const int maxn = 1010;
const int maxm = 110;
int num;//记录查找的次数 
int A[maxn],have[maxn];//have[i]记录当前的内存中是否有i这个单词 
int m , n , size;
int main(void)
{
    queue<int>Q;
    cin>>m>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>A[i];
        if(have[A[i]]==false)
        {
            num++;//增加一次查找次数 
            if(size<=m-1)
            {
                Q.push(A[i]);
                have[A[i]]=true;
                size++; 
            }
            else 
            {
                int x=Q.front();
                Q.pop();
                Q.push(A[i]);
                have[x]=false;
                have[A[i]]=true;
            } 
        }
    }
    cout << num; 
    return 0;
}

eg.这里使用桶的思想和队列进行结合,效率比较好

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容