[模拟][NOIP2010] 机器翻译
2015-05-30 23:37
267 查看
NOIP2010 机器翻译
时间限制: 1 Sec 内存限制: 128 MB题目描述
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。假设内存中有M 个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入M 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。假设一篇英语文章的长度为N 个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。输入
共2 行。每行中两个数之间用一个空格隔开。第一行为两个正整数M 和N,代表内存容量和文章的长度。第二行为N 个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。输出
共1 行,包含一个整数,为软件需要查词典的次数。【数据范围】对于10%的数据有M=1,N≤ 5。对于100%的数据有0
样例输入
3 71 2 1 5 4 4 1
样例输出
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 次词典。var n,m,ans,ci:longint; i,j,k:longint; c1,c2,x:array[1..1000]of longint; begin readln(m,n); for i:=1 to n do begin read(x[i]); if (c2[x[i]]=0)or((c2[x[i]]<=ci-m)and(ci>m)) then begin inc(ci); c1[ci]:=x[i]; c2[x[i]]:=ci; inc(ans); end end; writeln(ans); end.
相关文章推荐
- kb-07线段树-05-区间整体修改查询;(水)
- 最新最准确各大搜索引擎蜘蛛名称2014-4-15 10:02:52
- Hadoop1.x目录结构及Eclipse导入Hadoop源码项目
- 上传列表模板,并使用列表模板创建列表
- 基于STM32的函数信号发生器设计(下:软件设计)
- Struts2+Ajax实现检测用户名是否唯一
- IOS的控制器
- ns3的基础学习
- Android四大组件之一之service
- HDU2955
- iOS多线程-------线程的状态
- UG为何不能够直接使用空间曲线构建实体?
- Bootstrap 学习笔记 之代码和表格 (3 day)
- 使用buildroot编译和使用开发板上的gcc[native gcc]
- 一些自学的html/javascript代码(setTimeout, alert, 定格动画)
- WF 绘制图片的部分
- 使用matlab版本计算HOG 最为简单的计算方法 使用 vlfeat
- Python通过文件头来判断文件的真实类型
- SQLi Labs【level 1-5】
- 飞机大战-GameGoods商品的实现