首页 > 其他分享 >《机器翻译》

《机器翻译》

时间:2024-09-30 19:21:39浏览次数:10  
标签:翻译 temp 机器翻译 单词 查找 内存 软件

描述

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

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

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

输入描述

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

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

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

输出描述

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

样例输入 1 

3 7
1 2 1 5 4 4 1

样例输出 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 次词典。

数据范围

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

来源

2010NOIP提高组第一题

#include <iostream>
#include <queue>
using namespace std;
int n, words, res = 0, temp;
queue<int> q;
int cnt[100000] = { 0 };
int main(){
	cin >> n >> words;
	while (words--) {
		cin >> temp;
		if (cnt[temp]);
		else if (q.size() < n) {
			q.push(temp);
		    cnt[temp]++;
			res++;
		}
		else {
			cnt[q.front()]--;
			q.pop();
			q.push(temp);
			cnt[temp]++;
			res++;
		}
	}
	cout << res;
    return 0;
}

标签:翻译,temp,机器翻译,单词,查找,内存,软件
From: https://blog.csdn.net/2401_84500159/article/details/142662681

相关文章

  • 洛谷每日一题(P1540 [NOIP2010 提高组] 机器翻译)
    原题目链接:P1540[NOIP2010提高组]机器翻译-洛谷|计算机科学教育新生态(luogu.com.cn)原题目截图:思路分析:读懂题意,直接模拟过程即可。这是一道很简单的题目。思路过程很类似模拟页面置换算法中的先进先出(FIFO)策略。因此我们很容易想到,要用队列来实现。下面是......
  • 机器翻译之seq2seq训练、预测、评估代码
    目录1.seq2seq训练代码2.预测代码  3.评估代码 4.知识点个人理解 1.seq2seq训练代码seq2seq的训练代码:pytorch中训练代码一般都相同类似#将无效的序列数据都变成0(屏蔽无效内容的部分)defsequence_mask(X,valid_len,value=0):"""valid_len:有效序......
  • 机器翻译之数据处理
    目录1.导包  2.读取本地数据3.定义函数:数据预处理  4.定义函数:词元化 5.统计每句话的长度的分布情况6.获取词汇表7. 截断或者填充文本序列 8.将机器翻译的文本序列转换成小批量tensor 9.加载数据10.知识点个人理解1.导包 #导包importosimporttorch......
  • 机器翻译之创建Seq2Seq的编码器、解码器
    1.创建编码器、解码器的基类1.1创建编码器的基类fromtorchimportnn#构建编码器的基类classEncoder(nn.Module):#继承父类nn.Moduledef__init__(self,**kwargs):#**kwargs:不定常的关键字参数super().__init__(**kwargs)defforwa......
  • 洛谷P1540 [NOIP2010 提高组] 机器翻译答案
    #include<bits/stdc++.h>usingnamespacestd;/*数据结构:队列queue 桶:标记某个单词是否出现在内存中 t[i]=false:不在t[i]=true:在对于读入的每个单词x: 如果不存在单词x 存储(入队) t[x]=true 内存中元素个数(q.size())>M: t[q.front()]=falses; ......
  • 洛谷 P1540 [NOIP2010 提高组] 机器翻译
    题目概括给定N个整数,和一个容量为M的“字典”,从头到尾依次翻译,每次翻译先看自家字典,没有的话再看别人的字典并存到自家字典,如果自家字典满了,当前单词的翻译会代替最早进入的。做题思路定义一个长度为M的字典数组,依次遍历N个数,每次翻译先检索字典数组,没有的话加入字典并......
  • P1540 [NOIP2010 提高组] 机器翻译 题解
    题目概括给定N个整数,和一个容量为M的“字典”,从头到尾依次翻译,每次翻译先看自家字典,没有的话再看别人的字典并存到自家字典,如果自家字典满了,当前单词的翻译会代替最早进入的。做题思路定义一个长度为M的字典数组,依次遍历N个数,每次翻译先检索字典数组,没有的话加入字典并......
  • 如何在 8 个 GPU 上并行化 Transformer 模型进行机器翻译?
    我正在尝试使用变压器模型以几乎与原始文章相同的方式执行机器翻译。虽然该模型运行得相当好,但它需要更多的计算资源。为了解决这个问题,我在一台具有8个GPU处理器的计算机上运行了该模型,但我缺乏这方面的经验。我尝试对并行化进行必要的调整:transformer=nn.DataParallel......
  • Datawhale AI夏令营-机器翻译挑战赛
    Baseline代码相关解读是否需要使用self判定的标准是是否在类中在Python中,self是一个类的实例方法中的参数,用于指代调用该方法的实例本身。在代码示例中,self并不是必需的,因为这个示例代码不是类的一部分,只是一个独立的函数调用。让我们逐步解释这些区别。类中的方法与独立的......
  • datawhale第二期夏令营基于术语词典干预的机器翻译挑战赛——baseline【笔记】
    嗨!大家好,这一期我们来看一下夏令营所提供的baseline。首先,baseline是什么对于很多第一次参加datawhale夏令营的小伙伴,看到手册里发布的baseline,都会有这样的疑问。baseline是跑通比赛的第一个代码,里面用到的算法不会很复杂,更基础一些;本次baseline是构建和训练一个基于PyTorc......