题目描述 Description

小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义 来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有, 软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中 文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。 假设内存中有M个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入 内存前,如果当前内存中已存入的单词数不超过M?1,软件会将新单词存入一个未使用的 内存单元;若内存中已存入M个单词,软件会清空最早进入内存的那个单词,腾出单元来, 存放新单词。 假设一篇英语文章的长度为N个单词。给定这篇待译文章,翻译软件需要去外存查找多 少次词典?假设在翻译开始前,内存中没有任何单词。

输入描述 Input Description

输入共2行。每行中两个数之间用一个空格隔开。 第一行为两个正整数M和N,代表内存容量和文章的长度。 第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文 单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。

输出描述 Output Description

输出共1行,包含一个整数,为软件需要查词典的次数。

样例输入 Sample Input

3 7

1 2 1 5 4 4 1

样例输出 Sample Output

5

数据范围及提示 Data Size & Hint

【输入输出样例1说明】 整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况: 空:内存初始状态为空。 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次词典。

【数据范围】 对于10%的数据有M=1,N≤5。 对于100%的数据有0≤100,0≤1000。

代碼實現:

 #include<cstdio>
int n,m,a,b,c,ans,s[];
bool v[];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%d",&a);
if(v[a]) continue;
if(!v[a]){
if(s[]==n){v[s[++c]]=;s[c]=a;v[a]=;if(c==n) c=;}
else{v[a]=;s[++s[]]=a;}
++ans;
}
}
printf("%d\n",ans);
return ;
}

因為是數字,所以比較簡單。(其實字符的話,也可以用map)

机器翻译 2010年NOIP全国联赛提高组的更多相关文章

  1. Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组

    1069 关押罪犯 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description S 城现有两座监狱,一共 ...

  2. Codevs 1066 引水入城 2010年NOIP全国联赛提高组

    1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...

  3. 1068 乌龟棋 2010年NOIP全国联赛提高组

    1068 乌龟棋 2010年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descrip ...

  4. 引水入城 2010年NOIP全国联赛提高组(bfs+贪心)

    1066 引水入城 2010年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在一个遥远 ...

  5. 关押罪犯(2010年NOIP全国联赛提高组)

    题目描述 Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极 不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用&qu ...

  6. Codevs 1218 疫情控制 2012年NOIP全国联赛提高组

    1218 疫情控制 2012年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description H 国有 n 个城市,这 ...

  7. Codevs 3289 花匠 2013年NOIP全国联赛提高组

    3289 花匠 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 花匠栋栋种了一排花,每株花都 ...

  8. Codevs 1173 最优贸易 2009年NOIP全国联赛提高组

    1173 最优贸易 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description [问题描述] C 国有n ...

  9. Codevs 3731 寻找道路 2014年 NOIP全国联赛提高组

    3731 寻找道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找 ...

随机推荐

  1. Java并发编程(二)线程任务的中断(interrupt)

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回. ...

  2. Python应用与实践

    http://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html

  3. 支持单色条码图像生成的条形码控件Barcode Professional

    Barcode Professional for .NET Windows Forms条形码控件是一款灵活和强大的.NET组件(.NET DLL 类库),它让您轻松地添加条码生成和打印功能到您的.NE ...

  4. php可变变量

    例子: <?php $a = "b"; $$a = "c"; echo $$a; echo "<br>"; echo $b ...

  5. load get selectone 或者selectlist 以及hql查询语句不用提交事务

    提交事务是么有必要的 而且有时候subselect batchsize 会失效

  6. 【SQL查询日志】查看数据库历史查询记录

    --关键字:cross apply & outer apply --最后更新:2011-10-20 作者:Ronli--更新链接:http://www.cnblogs.com/ronli/ar ...

  7. struts2+hibernate整合开发步骤

    百度的各种代码,步骤,自己整合了一下 1,创建数据库 常用mysql   creat table..... 2,在WebContent下的bin中添加相应的包 http://pan.baidu.com ...

  8. 事件委托 EventHandler

    事件就是当对象或类状态发生改变时,对象或类发出的信息或通知.发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时 ...

  9. UILabel自适应宽度的函数详解

    之前用Text Kit写Reader的时候,在分页时要计算一段文本的尺寸大小,之前使用了NSString类的sizeWithFont:constrainedToSize:lineBreakMode:方 ...

  10. 深入理解:Android 编译系统

    一,简介: Android Build 系统是用来编译 Android 系统,Android SDK 以及相关文档的一套框架.众所周知,Android 是一个开源的操作系统.Android 的源码中包 ...