跳至正文

Noip 2010 提高组 第一题 机器翻译

  • OI路程

  纯水题,维护一个列队,作为内存列队,并且写两个操作:进列队、出列队;因为数据量十分的小(n<=1000)所以可以维护一个用于标记的数组,如果单词在列队中则置为1,不在则置为0,接着就是暴力——模拟就是。

#include <stdio.h>

int queue[1001];
int used[1001];
int tail, head;
int ans = 0;

void enqueue(int n)
{
        ans++;
        queue[tail++] = n;
        used[n] = 1;
}

int exqueue(void)
{
        used[queue[head]] = 0;
        return queue[head++];
}

int main(void)
{
        int i, j;
        int m, n;
        scanf("%d%d", &m, &n);
        for(i = 0; i < n && tail – head != m; i++){
                scanf("%d", &j);
                if(!used[j]){
                        enqueue(j);
                }
        }
        while(i < n){
                scanf("%d", &j);
                if(!used[j]){
                        exqueue();
                        enqueue(j);
                }
                i++;
        }
        printf("%d\n", ans);
        return 0;
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注