P1540机器翻译

· · 个人记录

一道小模拟,开一个队列模拟词典,当然队列可以手写,再开一个bool数组检查单词是否在队列中,之后按照题意模拟即可。。。

AC代码2018.9.15:

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int m,n,ans;
bool b[1010];
int main()
{
    queue <int> q;
    scanf("%d%d",&m,&n);
    for(int i=1;i<=n;++i)
    {
        int x;
        scanf("%d",&x);
        if(x<0) x=-x;
        if(b[x]==1) continue;
        if(q.size()==m)
        {
            int a=q.front();
            b[a]=0;
            q.pop();
        }
        ++ans;
        q.push(x);
        b[x]=1;
    }
    printf("%d",ans);
    return 0;
}