题目链接
题目背景

小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。

题目描述

这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。

假设内存中有M个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M-1,软件会将新单词存入一个未使用的内存单元;若内存中已存入M个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。

假设一篇英语文章的长度为N个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。

输入输出格式

输入格式:
输入文件共2行。每行中两个数之间用一个空格隔开。

第一行为两个正整数M和N,代表内存容量和文章的长度。

第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。

输出格式:
包含一个整数,为软件需要查词典的次数。

输入输出样例

输入样例#1:
3 7
1 2 1 5 4 4 1

输出样例#1:
5

说明

每个测试点1s

对于10%的数据有M=1,N≤5。

对于100%的数据有0<=M<=100,0<=N<=1000。

整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:

空:内存初始状态为空。

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次词典。

解题思路:
根据题意,进行模拟即可

#include<bits/stdc++.h>
using namespace std;
int main(){int m,n,x,k,arr[1005];queue <int> que;scanf("%d%d",&m,&n);memset(arr,0,sizeof(arr));k = 0;for(int i = 0;i < n;i++){scanf("%d",&x);if(!arr[x]){//如果不存在内存中arr[x] = 1;//标识位置为1que.push(x);k++;}if(que.size() > m){//如果内存空间满了arr[que.front()] = 0;//将最先进入的单词清出内存que.pop();//将最先进入的单词出队}}printf("%d\n",k);return 0;
}

P1540 机器翻译相关推荐

  1. 浴谷P1540 机器翻译

    浴谷P1540 机器翻译 #include<bits/stdc++.h> using namespace std; int m; int n; queue<int> memor ...

  2. 洛谷——P1540 机器翻译

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

  3. P1540 机器翻译 模拟

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

  4. 可由一个尾指针唯一确定的链表有_L2数据结构第08课 单向链表和循环链表

    L2-数据结构-第08课 单向链表和循环链表 线性表 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续.当然,第一个元素只有后续,最后一个元素只有前驱. 线性表一般分为& ...

  5. 洛谷【数据结构1-1】线性表

    P3156 [深基15.例1]询问学号 传送门 题目描述 有 n(n≤2×1^6) 名同学陆陆续续进入教室.我们知道每名同学的学号(在 1 到 10^9之间),按进教室的顺序给出.上课了,老师想知道第 ...

  6. 重走长征路---OI每周刷题记录---11月4日 2013

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

  7. vector数组的使用——机器翻译(洛谷 P1540)

    题目选自洛谷P1540 主要思路是: 使用一个 vector 来表示内存. 依次读如数据,判断是否在内存中(find).如果不在,就需要查词典,然后加入内存.将答案 + 1. 如果内存满了,就把最先进 ...

  8. 机器翻译(洛谷-P1540)

    题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译:如果内存中没 ...

  9. 机器翻译注意力机制及其PyTorch实现

    前面阐述注意力理论知识,后面简单描述PyTorch利用注意力实现机器翻译 Effective Approaches to Attention-based Neural Machine Translat ...

最新文章

  1. 知乎热议:985 计算机视觉研究生找不到工作怎么办?
  2. 【转载】Eclipse 最常用快捷键 (动画讲解),最简单的一些快捷键
  3. 推荐系统阅读清单:最近我们在读哪些论文?
  4. spring mvc静态资源访问的配置
  5. 《C++ Primer》14.2.2节练习
  6. Spark K-Means
  7. html5 字符串对象,JavaScript核心对象-String对象
  8. Linux 启动流程即init程序分析--2
  9. 固定资产分类与代码_促进产业技术升级换代!固定资产加速折旧优惠政策了解一下...
  10. 市场上的视觉图像采集卡软硬功能对比
  11. [Xilinx FPGA] #1 Xilinx ISE 工程开发全流程笔记
  12. 手把手教你制作一块Linux开发板(基于Planck-pi)
  13. 数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题
  14. C语言入门系列 -运算符
  15. MySQL 5.7 安装教程(全步骤、保姆级教程)
  16. Nginx 报404问题,如何解决
  17. keepass使用坚果云管理我的密码
  18. 网络安全与渗透:信息收集——google浏览器插件,代理服务(五)此生无悔入华夏,男儿何不带吴钩
  19. 开关电源雷击浪涌整改_防雷击浪涌的开关电源电路设计
  20. Thrift入门及Java实例

热门文章

  1. nuxt解决首屏加载慢问题_滴普大前端 | 滴普是如何实现首屏加载性能优化的?...
  2. 站长号论坛基本行为准则
  3. 高仿网易照片浏览器,支持本地及网络相册!
  4. 固体物理 2022.10.14
  5. 【机器学习】鸢尾花分类
  6. 物流智能机器人—结合WMS系统进行通讯的海格里斯(HEGERLS)单轨环形RGV穿梭车
  7. mysql重连_mysql自动重连
  8. Q620D高强板抗拉屈服强度及Q620D厚度方向抗撕裂性能
  9. 【1077】Kuchiguse (20 分)
  10. 数字电压电流表VCB