2010 机器翻译

机器翻译

题目背景

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

题目描述

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

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

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

输入格式:

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

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

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

输出格式:

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

输入样例:

3 7
1 2 1 5 4 4 1

输出样例:

5

说明

每个测试点1s

对于10%的数据有M=1,N≤5。

对于100%的数据有0<=M<=100,0<=N<=1000。

整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:

空:内存初始状态为空。

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次词典。

//按照队列的思想做就好了,模拟一下;
#include<cstdio>
int n,m,b,g,ans=0;
int que[1002],h=1,t=1;
int main() {
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d",&b);
        g=0;
        for(int j=h;j<t;j++) if(que[j]==b) g=1;
        if(g==0){         //当在前n个元素中没有找到读入的内容时,
            que[t]=b;     //插入
            t++;          //t指向最后一个元素的下一个位置;
            ans++;        //累计答案;
            if(t-h>n) h++;//超内存,弹出最早值;
        }
    }
    printf("%d",ans);
    return 0;
}

时间: 2024-10-31 02:24:48

2010 机器翻译的相关文章

机器翻译 2010年NOIP全国联赛提高组

题目描述 Description 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义 来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有, 软件就会用它进行翻译:如果内存中没有,软件就会在外存中的词典内查找,查出单词的中 文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译. 假设内存中有M个单元,每单元能存放一个单词和译义.每当软件将一个新单词存入 内存前,如

1067 机器翻译

1067 机器翻译 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义 来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有, 软件就会用它进行翻译:如果内存中没有,软件就会在外存中的词典内查找,查出单词

NOIP 2010 题解

[前言]最近这的很少弄OI了,虽说是暑假.趁要把NOIP2010~2013的题刷完,我做完一份便写一篇题解吧. [P1774机器翻译] P1774机器翻译 Accepted 标签:[显示标签] 描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译:如果内存中没有,软件就会在外存中的词典内查找,查出单

基于词汇衔接的文档级扩展机器翻译评测指标

摘要 本文提出了通过词汇链接的使用来提高文档级别机器翻译评估性能的想法.作为一种实现文字连贯的语言手段,词汇衔接通过相同或相关的意思的单词将句子连在一起组成一个有意义的交织结构.机器翻译与人工翻译进行了一场比较来表明他们的关键区别之一是人工翻译往往比机器翻译使用更多的衔接手段.很多方法应用这个特点来评测机器翻译提交的文档,其中包括不依赖于参考译文.实验结果表明,将这一特征与语句级评价指标进行融合可以提高与人工评判的相关性. 1 介绍 在过去的十年里,机器翻译从自动评价的发展中获益良多.在某种程度

NOIP 2010题解

唔..NOIP2010比较简单,总体感觉不错. Problem 1: 机器翻译 水题,队列的简单应用. 读入时判断是否在内存中,可以用hash优化.如果不在内存中push进内存,放不下了pop header不用说了.上代码(未hash优化) //Bazinga! #include "cstdio" int sum,i,m,n; struct Q{ int len,head,tail,qub[1001],i; void push(int n){ qub[tail]=n; ++tail;

部署FIM 2010 R2&mdash;&mdash;6安装和配置PCNS

部署FIM 2010 R2--6安装和配置PCNS 在所有域控安装安装PCNS 1. 如果第一次安装PSNS需要扩展构架,如果之前安装过PCNS,略过此步骤,扩展构建需要在CMD进入PCNS安装目录中运行"Password Change Notification Service.msi" SCHEMAONLY=TRUE 下载PCNS安装包,首先在每台DC上扩展架构, msiexec /i "C:\Users\Administrator\Desktop\Password Cha

部署FIM 2010 R2&mdash;5配置Synchronization Service

部署FIM 2010 R2-配置Synchronization Service 配置多有域环境账户密码同步 在各个域创建ADMA账户,并赋予对域的复制目录更改和复制目录更改所有项权限:和对用户的密码重置和解锁密码权限: 在fim01所使用的DNS服务器上,建立同步密码目标域的DNS条件转发:并测试能正常解析目标域: 确保fim01到目标域的域控制器的TCP和UDP端口389.88.464能双向正常通信: 1.打开Synchronization Service窗口, 2.选择Management

部署FIM 2010 R2&mdash;4安装FIM 2010 R2 Synchronization Service

部署FIM 2010 R2-4安装FIM 2010 R2 Synchronization Service 1.打开FIM2010 R2安装控制台,选择"Install Synchronization Service" 2.选择"下一步", 同意许可,选择"下一步", 保持默认, 3.为FIM同步服务指定数据库和实例, 4.为FIM同步服务指定服务账户,如下图,(注:Domain必须写为contoso,而不是contoso.com) 5.使用默认组

部署FIM 2010 R2&mdash;3安装FIM 2010 R2 Service and Portal

部署FIM 2010 R2-3安装FIM 2010 R2 Service and Portal 1.打开FIMSplash文件,如下图, 选择"Install Service and Portal", 2.选择"下一步", 选择"下一步", 选择"下一步", 3.选择要安装的角色,这里我们全部安装, 4.为FIM服务器指定SQL 2008数据库服务器名称以及FIM数据库名称,这里使用本地数据库服务,数据库名称使用默认名称, 5