侧边栏

洛谷 P1540 机器翻译

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

思路:纯模拟题,用deque直接模拟

代码:

 1 #include<bits/stdc++.h>
 2 #define inf 0x3f3f3f3f
 3 //#define f(i,a,n) for(int i=a;i<n;i++)
 4 typedef long long ll;
 5 const int M = int(1e5) + 5;
 6 using namespace std;
 7 
 8 deque<int> lib;
 9 deque<int>::iterator pos;
10 
11 int main()
12 {
13     int m, n;
14     cin >> m >> n;
15     int ans = 0;
16     while (n--)
17     {
18         int x; cin >> x;
19         pos = find(lib.begin(), lib.end(), x);
20         if (pos == lib.end())
21         {
22             lib.push_back(x);
23             ans++;
24         }
25         if (lib.size() > m) lib.pop_front();
26     }
27     cout << ans << endl;
28     return 0;
29 }

备注:一开始想用的queue,结果发现queue.begin()不存在,另外要注意find函数返回的是容器末尾的迭代器end,而容器最后一个元素是end的前一个,比如容器有2个元素,end指向的是“第三个”元素。

posted @ 2019-02-26 22:30  晴人  阅读(211)  评论(0编辑  收藏  举报