题目
Description
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是
从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的
中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词
的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。假设内存中有 M 个单元,每单元
能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过 M?1,软件会
将新单词存入一个未使用的内存单元;若内存中已存入 M 个单词,软件会清空最早进入内存的那个单词,腾出单
元来,存放新单词。假设一篇英语文章的长度为 N个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词
典?假设在翻译开始前,内存中没有任何单词。
Input
输入文件共 2 行。每行中两个数之间用一个空格隔开。
第一行为两个正整数 M和 N,代表内存容量和文章的长度。
第二行为 N 个非负整数,按照文章的顺序,每个数(大小不超过 1000)代表一个英文 单词。文章中两个单词是
同一个单词,当且仅当它们对应的非负整数相同。
0<M≤100,0<N≤1000
Output
包含一个整数,为软件需要查词典的次数。
Sample Input
3 7
1 2 1 5 4 4 1
Sample Output
5
//整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:
空:内存初始状态为空。
1. 1:查找单词1 并调入内存。
2. 1 2:查找单词 2 并调入内存。
3. 1 2:在内存中找到单词 1。
4. 1 2 5:查找单词 5 并调入内存。
5. 2 5 4:查找单词 4 并调入内存替代单词 1。
6. 2 5 4:在内存中找到单词 4。
7. 5 4 1:查找单词 1 并调入内存替代单词 2。
共计查了 5次词典。

思路
这道题目我用了一个集合和一个队列来维护,集合的作用只是方便查找,当然也可以自己写一个find函数直接在队列里面去找,然后呢队列就是为了模拟题目,跟着题目思路打出来就可以了。

代码

 #include<bits/stdc++.h>
using namespace std;
queue<int> q;
set<int> s;
int main()
{
int n,m,word,sum=;
cin>>m>>n;
for(int i=;i<=n;i++)
{
cin>>word;
if(!s.count(word))
{
if(q.size()<m)
{
q.push(word);
s.insert(word);
sum++;
}
else
{
s.erase(q.front());
q.pop();
q.push(word);
s.insert(word);
sum++;
}
}
}
cout<<sum<<endl;
return ;
}

【题解】[Noip2010]机器翻译-C++的更多相关文章

  1. luoguP1540 机器翻译 题解(NOIP2010)

    P1540 机器翻译  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...

  2. NOIP2010 机器翻译

    1机器翻译 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单 ...

  3. luoguP1541 乌龟棋 题解(NOIP2010)

    P1541 乌龟棋 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<cma ...

  4. luoguP1525 关押罪犯 题解(NOIP2010)(并查集反集)

    P1525 关押罪犯  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...

  5. luoguP1514 引水入城 题解(NOIP2010)(Bfs+贪心)

    P1514 引水入城  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...

  6. noip2010机器翻译

    以下题面摘自洛谷1540 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换. ...

  7. NOIP2009-2018简要题解

    口胡警告 NOIP2009 潜伏者 模拟 Hankson 的趣味题 对四个数\(a_0,a_1,b_0,b_1\)分解质因数,结果序列分别记为\(\{p1^{b1}\},\{p2^{b2}\},\{p ...

  8. Codeforces Codeforces Round #484 (Div. 2) E. Billiard

    Codeforces Codeforces Round #484 (Div. 2) E. Billiard 题目连接: http://codeforces.com/contest/982/proble ...

  9. noip2017考前整理(未完)

    快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...

随机推荐

  1. Excel时间序列函数

    year 返回对应于某个日期的年份. month 返回对应于某个日期的月份. day 返回对应于某个日期的年份. weekday 返回对应于某个日期的天数. weeknum 返回对应日期在本年中是第几 ...

  2. Python笔记002-Python编程基础概念

    第二章(1):Python编程基础概念 1. Python 程序的构成 Python 程序有模块组成.一个模块对应 Python 源文件,一般后缀名是:.py. 模块有语句组成.运行 Python程序 ...

  3. 【动态规划】Concerts

    Concerts 题目描述 John enjoys listening to several bands, which we shall denote using A through Z. He wa ...

  4. asp.net core-5.控制台读取json文件

    1,创建控制台应用程序,应用using Microsoft.Extensions.Configuration; 2,新建一个app.json文件 然后修改app.json的属性 3,生成项目,可以看到 ...

  5. 剑指offer(5)——从尾到头打印链表

    题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: public class ListNode { int val; ListNode next = null; ListN ...

  6. 联想U310 安装系统后无法识别机械硬盘处理

    过程: 原30G的固态更换成250G的 mSATA固态,去掉机械硬盘,开始在固态里安装系统, 系统用PE登录,安装正版Win7 64B 专业版, 安装结束,接上机械硬盘, *PE下,可以正常识别2块硬 ...

  7. sql注入测试(4)--如何防止该类缺陷发生

    检查用户输入的合法性,确信输入的内容只包含合法的数据,数据检查应当在客户端和服务器端都执行之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性.在客户端,攻击者完全有可能获得网页的源代码,修 ...

  8. 一个因MySQL大小写敏感导致的问题

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 00 MYSQL对大小写敏感 见字如面,见标题知内容.你有遇到过因为MYSQL对大小写敏感而被坑的体验吗? 之前看过阿里巴 ...

  9. Uwl.Admin开源框架(一)

    1.前言 作为一个忠实的软粉,一直期待微软出跨平台,一直在等待.Net Core,因为刚毕业对于.Net的很多东西不是很熟知,就开始了.Net Core的摸索,一路上坎坎坷坷,对于新技术一直很期待,就 ...

  10. putty和psftp命令行参数

    putty和psftp命令行参数 https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip https://the.earth.li/~sgt ...