题目:
1、 noip_2010 水题
2、 用队列 queue 维护缓存,用 数组 vis[MaxN] 来记录每一个词语是否在缓存上
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;const int MaxN = 1010;
bool vis[MaxN] = {
false};
int n, m;int main()
{
queue<int> q;scanf("%d%d", &m, &n);int word;int ans = 0;int front = 0;for(int i = 0; i < n; ++i){
scanf("%d", &word);if(false == vis[word]){
if((int)q.size() >= m){
front = q.front();vis[front] = false;q.pop();}q.push(word);vis[word] = true;++ans;}}printf("%d\n", ans);return 0;
}/* 3 7 1 2 1 5 4 4 1 *//* 5 */