题目背景

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

题目描述

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

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

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

输入输出格式

输入格式:

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

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

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

输出格式:

包含一个整数,为软件需要查词典的次数。

思路1:暴力

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int zd[1001],m;
bool find(int x){int i;for(i=1;i<=m;i++)if(zd[i]==x)return true;return false;
}
int i,n,j,k,z;
int main(){memset(zd,-1,sizeof(zd));cin>>m>>n;for(i=1;i<=n;i++){scanf("%d",&z);if(!find(z)){j++;k++;while(k>m)k-=m;zd[k]=z;}}cout<<j;return 0;
}

我AC前WA了N次~~~主要是因为数组模拟思路不够明确,一下想标记,一下想队列~

~So, WA得惨不忍睹~

思路2:Hash+队列

#include<iostream>
using namespace std;
int d[1000+5],p[1000+5];
int main(){int i,j,k,m,n;int f=1,l=0;cin>>m>>n;int ans=0;for(i=1;i<=n;i++){cin>>k;if(p[k]==0){ans++;d[++l]=k;p[k]=l;if(l-f>=m){p[d[f]]=0;f++;}}}cout<<ans<<endl;    return 0;
} 

具体来说,就是判断每个单词是否进入队列以及队列是不是要炸了(就弹掉)。没用STL,直接数组模拟就好了。

Luogu P1540 机器翻译相关推荐

  1. 浴谷P1540 机器翻译

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

  2. 洛谷——P1540 机器翻译

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

  3. P1540 机器翻译 模拟

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

  4. P1540 机器翻译

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. SharePoint 2010 单点登录
  2. https是如何保证数据传输的安全
  3. MVC匿名类传值学习
  4. Docker从入门到实践笔记(一)
  5. sourcetree不好做到的一些git操作
  6. 有关php链接MySql数据库的总结
  7. 字符串(AC自动机):COCI 2015 round 5 divljak
  8. 三人表决器程序c语言,“三人表决器”逻辑功能PLC程序设计(有梯形图 指令表)...
  9. Javascript 专项练习
  10. PHP幸运抽奖系统带后台源码
  11. R 包 rgl 安装失败, 报错 X11 not found but required, configure aborted 及解决方法
  12. 全球排名前500的网站都是做什么的
  13. 毕业论文的页眉、页脚奇偶页不同的设置方法
  14. video.js API
  15. ps命令 proc文件系统
  16. 苹果mac电脑怎么设置默认浏览器
  17. windows10家庭版 超级管理员(administrator)用户登录
  18. 掘金量化诚聘技术伙伴,欢迎大佬、优秀的萌新投递!
  19. 传感器的主要特性指标有哪些?
  20. 记住回家的路(周国平)

热门文章

  1. 人工智能顶级会议与国际期刊总结
  2. MySQL中的any_value()函数
  3. 技术解读:Dragonfly 基于 P2P 的智能镜像加速系统
  4. LVGL+NES|基于lvgl实现nes模拟器(lv_100ask_nes)
  5. PostgreSQL下载地址
  6. 浅析API网关——Ocelot[网关]+Consul[服务发现负载均衡]+Polly[服务熔断]+Ids4[服务认证]
  7. 【NLP】第16章 使用RNN 和注意力的自然语言处理
  8. 简单好用的js 压缩工具
  9. 整体大于部分_怦然心动 Flipped,有多少整体大于全部!
  10. 移动apn接入点哪个快_4g网速最快的apn接入点 如图所示