【寒假任务】洛谷1540 机器翻译
2017-01-13 21:33
246 查看
问题描述
机器翻译原理:碰到单词现在内存里寻找,若没有再到外存取寻找。内存中有多个单元,一个单元可以存储一个单词。假设有m个单元,若内存中有m-1个单元被用,那么从外存中查找的单词可以存储;若m个单元都被存储,删去最先进入单元的单词,继续存储。现给出内存容量m,文章长度n,问查完一篇文章要到外存去查找几次。
输入
第一行为两个正整数M和N,代表内存容量和文章的长度。
第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。
输出
包含一个整数,为软件需要查词典的次数。
样例输入
3 7
1 2 1 5 4 4 1
样例输出
5
算法讨论
简单的模拟,考虑到范围很小,纯粹的暴力就能过。时间复杂度O(n²)。
Pixiv ID:59781074
机器翻译原理:碰到单词现在内存里寻找,若没有再到外存取寻找。内存中有多个单元,一个单元可以存储一个单词。假设有m个单元,若内存中有m-1个单元被用,那么从外存中查找的单词可以存储;若m个单元都被存储,删去最先进入单元的单词,继续存储。现给出内存容量m,文章长度n,问查完一篇文章要到外存去查找几次。
输入
第一行为两个正整数M和N,代表内存容量和文章的长度。
第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。
输出
包含一个整数,为软件需要查词典的次数。
样例输入
3 7
1 2 1 5 4 4 1
样例输出
5
算法讨论
简单的模拟,考虑到范围很小,纯粹的暴力就能过。时间复杂度O(n²)。
const maxn=1000; var a:array[1..maxn] of longint; b:array[1..101] of longint; f:array[0..maxn] of boolean; i,j,k,s,n,m:longint; begin read(n,m); for i:=1 to m do read(a[i]); for i:=1 to m do begin if f[a[i]]=false then begin inc(s); inc(j); b[j]:=a[i]; f[a[i]]:=true end; if j>n then begin f[b[1]]:=false; for k:=2 to j do b[k-1]:=b[k]; dec(j) end; end; write(s) end.
Pixiv ID:59781074
相关文章推荐
- C#模拟http 发送post或get请求的简单实例
- Transformation 能将 Windows XP/Server 2003 操作系统,完美地模拟成 Windows Vista 的软件
- 用javascript和css模拟select的脚本
- PHP模拟asp.net的StringBuilder类实现方法
- C#使用ImitateLogin模拟登录百度
- javascript用层模拟可移动的小窗口
- JS模拟简易滚动条效果代码(附demo源码)
- jQuery模拟实现的select点击选择效果【附demo源码下载】
- 自编jQuery插件实现模拟alert和confirm
- JS模拟按钮点击功能的方法
- JS模拟的Map类实现方法
- PHP模拟asp中response类实现方法
- 模拟Spring的简单实现
- javascript 模拟点击广告
- JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
- php实现模拟post请求用法实例
- JavaScript实现MIPS乘法模拟的方法
- 模拟xcopy的函数
- JS模拟实现Select效果代码
- php模拟服务器实现autoindex效果的方法