Luogu P1540 机器翻译
题目背景
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。
题目描述
这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。
假设内存中有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 机器翻译相关推荐
- 浴谷P1540 机器翻译
浴谷P1540 机器翻译 #include<bits/stdc++.h> using namespace std; int m; int n; queue<int> memor ...
- 洛谷——P1540 机器翻译
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...
- P1540 机器翻译 模拟
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...
- P1540 机器翻译
题目链接 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词 ...
- 重走长征路---OI每周刷题记录---11月4日 2013
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
- 可由一个尾指针唯一确定的链表有_L2数据结构第08课 单向链表和循环链表
L2-数据结构-第08课 单向链表和循环链表 线性表 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续.当然,第一个元素只有后续,最后一个元素只有前驱. 线性表一般分为& ...
- 洛谷【数据结构1-1】线性表
P3156 [深基15.例1]询问学号 传送门 题目描述 有 n(n≤2×1^6) 名同学陆陆续续进入教室.我们知道每名同学的学号(在 1 到 10^9之间),按进教室的顺序给出.上课了,老师想知道第 ...
- vector数组的使用——机器翻译(洛谷 P1540)
题目选自洛谷P1540 主要思路是: 使用一个 vector 来表示内存. 依次读如数据,判断是否在内存中(find).如果不在,就需要查词典,然后加入内存.将答案 + 1. 如果内存满了,就把最先进 ...
- 机器翻译(洛谷-P1540)
题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译:如果内存中没 ...
- 机器翻译注意力机制及其PyTorch实现
前面阐述注意力理论知识,后面简单描述PyTorch利用注意力实现机器翻译 Effective Approaches to Attention-based Neural Machine Translat ...
最新文章
- SharePoint 2010 单点登录
- https是如何保证数据传输的安全
- MVC匿名类传值学习
- Docker从入门到实践笔记(一)
- sourcetree不好做到的一些git操作
- 有关php链接MySql数据库的总结
- 字符串(AC自动机):COCI 2015 round 5 divljak
- 三人表决器程序c语言,“三人表决器”逻辑功能PLC程序设计(有梯形图 指令表)...
- Javascript 专项练习
- PHP幸运抽奖系统带后台源码
- R 包 rgl 安装失败, 报错 X11 not found but required, configure aborted 及解决方法
- 全球排名前500的网站都是做什么的
- 毕业论文的页眉、页脚奇偶页不同的设置方法
- video.js API
- ps命令 proc文件系统
- 苹果mac电脑怎么设置默认浏览器
- windows10家庭版 超级管理员(administrator)用户登录
- 掘金量化诚聘技术伙伴,欢迎大佬、优秀的萌新投递!
- 传感器的主要特性指标有哪些?
- 记住回家的路(周国平)
热门文章
- 人工智能顶级会议与国际期刊总结
- MySQL中的any_value()函数
- 技术解读:Dragonfly 基于 P2P 的智能镜像加速系统
- LVGL+NES|基于lvgl实现nes模拟器(lv_100ask_nes)
- PostgreSQL下载地址
- 浅析API网关——Ocelot[网关]+Consul[服务发现负载均衡]+Polly[服务熔断]+Ids4[服务认证]
- 【NLP】第16章 使用RNN 和注意力的自然语言处理
- 简单好用的js 压缩工具
- 整体大于部分_怦然心动 Flipped,有多少整体大于全部!
- 移动apn接入点哪个快_4g网速最快的apn接入点 如图所示