P1540 机器翻译
题目链接
题目背景
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。
题目描述
这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。
假设内存中有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 机器翻译相关推荐
- 浴谷P1540 机器翻译
浴谷P1540 机器翻译 #include<bits/stdc++.h> using namespace std; int m; int n; queue<int> memor ...
- 洛谷——P1540 机器翻译
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...
- P1540 机器翻译 模拟
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...
- 可由一个尾指针唯一确定的链表有_L2数据结构第08课 单向链表和循环链表
L2-数据结构-第08课 单向链表和循环链表 线性表 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续.当然,第一个元素只有后续,最后一个元素只有前驱. 线性表一般分为& ...
- 洛谷【数据结构1-1】线性表
P3156 [深基15.例1]询问学号 传送门 题目描述 有 n(n≤2×1^6) 名同学陆陆续续进入教室.我们知道每名同学的学号(在 1 到 10^9之间),按进教室的顺序给出.上课了,老师想知道第 ...
- 重走长征路---OI每周刷题记录---11月4日 2013
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
- vector数组的使用——机器翻译(洛谷 P1540)
题目选自洛谷P1540 主要思路是: 使用一个 vector 来表示内存. 依次读如数据,判断是否在内存中(find).如果不在,就需要查词典,然后加入内存.将答案 + 1. 如果内存满了,就把最先进 ...
- 机器翻译(洛谷-P1540)
题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译:如果内存中没 ...
- 机器翻译注意力机制及其PyTorch实现
前面阐述注意力理论知识,后面简单描述PyTorch利用注意力实现机器翻译 Effective Approaches to Attention-based Neural Machine Translat ...
最新文章
- 知乎热议:985 计算机视觉研究生找不到工作怎么办?
- 【转载】Eclipse 最常用快捷键 (动画讲解),最简单的一些快捷键
- 推荐系统阅读清单:最近我们在读哪些论文?
- spring mvc静态资源访问的配置
- 《C++ Primer》14.2.2节练习
- Spark K-Means
- html5 字符串对象,JavaScript核心对象-String对象
- Linux 启动流程即init程序分析--2
- 固定资产分类与代码_促进产业技术升级换代!固定资产加速折旧优惠政策了解一下...
- 市场上的视觉图像采集卡软硬功能对比
- [Xilinx FPGA] #1 Xilinx ISE 工程开发全流程笔记
- 手把手教你制作一块Linux开发板(基于Planck-pi)
- 数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题
- C语言入门系列 -运算符
- MySQL 5.7 安装教程(全步骤、保姆级教程)
- Nginx 报404问题,如何解决
- keepass使用坚果云管理我的密码
- 网络安全与渗透:信息收集——google浏览器插件,代理服务(五)此生无悔入华夏,男儿何不带吴钩
- 开关电源雷击浪涌整改_防雷击浪涌的开关电源电路设计
- Thrift入门及Java实例