Problem:机器翻译

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

这是一道非常基础的队列题目,所以我们就要开队列(M),队列的特质是先进先出,所以刚好和这道题十分相似,所以只要会队列,这道题就非常容易解决啦,来看代码:

#include<bits/stdc++.h>//可爱的万能头(每次都重名emmm)
using namespace std;
set<int> s;//set存储去重(完美)
queue<int> q;//用来当队列。
int main()
{int n,m,v,ans=0;cin>>m>>n;//输入for(int i=1;i<=n;i++){cin>>v;//输入你要查的if(!s.count(v))//查找{if(q.size()<m)//如果没查完{q.push(v);//将其插入队列末s.insert(v);//将其插入队列首ans++;//查找次数++}else{s.erase(q.front());//删去前面的(队列)q.pop();//清空q.push(v);//插入队末s.insert(v);//插入队首ans++;//查找次数++}    }}cout<<ans<<endl;return 0;
}

这道题运用队列非常巧妙是一道不错的队列模板题,花花个人挺喜欢的,不知你们怎么想,大家都懂:

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

开心过好每一天,记得点赞哦!!

Problem:机器翻译相关推荐

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

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

  2. 基于RNN的语言模型与机器翻译NMT

    语言模型 传统的语言模型 基于RNN的语言模型 机器翻译 基于统计的机器翻译架构 基于RNN的seq2seq架构 seq2seq结构 优化seq2seq attention search in dec ...

  3. CS224n自然语言处理(二)——语言模型、机器翻译和CNN

    文章目录 一.语言模型及RNN 1.n-gram语言模型 2.Window-based DNN 3.循环神经网络 (一)梯度消失和梯度爆炸 (二)LSTM (三)GRU 4.评估语言模型 5.预处理 ...

  4. 使用seq2seq模型进行机器翻译的方法不同

    自然语言处理| 深度学习 (Natural language processing | Deep learning) Machine translation is a computational li ...

  5. 神经机器翻译的前世今生--转自散文网

    本文转自散文网,原文链接如下:http://sanwen.net/a/mjyslpo.html 神经机器翻译 2016-11-13 03:17雅译公司 推荐100次 1.     引言 神经机器翻译( ...

  6. 冷战时期_从冷战到深度学习的机器翻译历史

    冷战时期 by Ilya Pestov 通过伊利亚·佩斯托夫(Ilya Pestov) 从冷战到深度学习的机器翻译历史 (A history of machine translation from t ...

  7. 【CS224n】(lecture7)机器翻译NMT,seq2seq和attention

    学习总结 (1)NMT的优缺点: 和SMT相比: 优点: 更好的性能,翻译更流畅,能更好利用上下文,利用短语相似性. 通过"端到端"形式网络优化 不用特征工程,节约人力,对所有的语 ...

  8. [持续更新] 神经机器翻译论文汇总 Papers on Neural Machine Translation

    [持续更新] 神经机器翻译论文汇总 Papers on Neural Machine Translation 源文地址 :http://polarlion.github.io/nmt/2017/02/ ...

  9. 【人工智能学习】【十二】机器翻译及相关技术

    机器翻译及相关技术 机器翻译(MT)是将一种语言转换成另一种语言,语言之间表达一个含义用的词汇量是不同的,之前讲到的RNN.LSTM.GRU[人工智能学习][十一]循环神经网络进阶里的输出要么是多对多 ...

最新文章

  1. 物料主数据(SAP屠夫)
  2. Unity 2017 Game Optimization 读书笔记(3)Scripting Strategies Part 3
  3. 免费SSL证书(支持1.0、1.1、1.2)
  4. nRF51822 硬件复位引脚
  5. Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)
  6. 一步一步写算法(之链表重合)
  7. oracle20g,GaussDB 100 OLTP: 缩减创建数据库的20G空间需求及GS-00714
  8. key php 转小写_PHP开发常识
  9. linux安装wineQQ
  10. 学科实践活动感悟50字_学科实践活动写实记录50字3篇
  11. 可伸缩系统的架构经验
  12. 钢铁侠机器人公仔_自己再演一遍复联!优必选钢铁侠 MK50 机器人评测
  13. 聚名:怎样批量查询50个域名的注册信息?
  14. 激活Windows Server 2003 2008终端授权服务器
  15. 一、Azure Kinect 传感器 SDK 下载——Azure Kinect DK入门
  16. 存储系统性能影响因素(2)---固态硬盘
  17. dpi和ppi换算_ppi和dpi换算(1ppi等于多少dpi)
  18. 免费的人事管理软件?好用的人事管理软件有哪些呢?
  19. 【极客日常】解决UE4中FJsonObject转USTRUCT的坑
  20. 英文网站注册常用词汇

热门文章

  1. 电子邮件客户端程序设计与实现 c++ 计网课设
  2. 创新发展,科技制胜 | 云扩科技入选“2022中小企业智能化解决方案提供商TOP10”
  3. Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件
  4. Java:获取当前日期当前季度、上一季度开始结束日期时间
  5. 烟气脱硫技术及工艺流程超全剖析
  6. 上班划水神器:一个可以在控制台玩斗地主项目!
  7. 无人机指挥系统(Drone Commander)
  8. 青山清水静心情 下联是...
  9. 基于层次分析法与熵权法的主客观组合赋权模型(原创:小青龙)
  10. 一款发动机爆震检测分析仪解决方案:英国 phormula 爆震检测分析仪+PICO