【机器翻译】题解

《P1540 [NOIP 2010 提高组] 机器翻译 题解》 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过 M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入 M 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。 阅读详情

最近心血来潮,打算步入题解之门,所以这里,我也开始编写题解啦

题目

题目背景

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

题目描述

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

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

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

输入格式

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

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

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

输出格式

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

样例 

样例输入 

3 7
1 2 1 5 4 4 1

样例输出 

5

数据范围

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

题解

算法分析

哈希,指针。

解题思路

题目中的M个单元我们可以用一个bool类型的数组,a[i]用来记录i是否在单元里面,用int 类型b[]来记录数据的顺序,再用两个变量指向b[]的头和尾。

时间复杂度

O(n)

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,ans,l,r,b[1001];    //b[1001] 记录单词顺序 
bool a[1001];
int main(){
    cin>>m>>n;
    for(int x,i=1;i<=n;i++){
        cin>>x;
        if(a[x]==0){          //判断是否在单元里 
            ans++;
            r++;
            b[r]=x;
            a[x]=1;
            if(r>m){          //判断是否超出单元数量 
                l++;
                a[b[l]]=0;
            }
        }
    }
    cout<<ans;
    return 0;
}

机器翻译题解 原文来自:https://anguei.blog.luogu.org/solution-p1540 #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int m, n, t, ans = 0; cin >> m >> n; vector<int> v; while (cin >&g 阅读详情

相关推荐

【题解-洛谷】P1540 [NOIP 2010 提高组] 机器翻译

这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。

写代码的犄角旮瘩 1163

洛谷:P1540 机器翻译 Java题解

该解法简洁高效,能够正确处理题目给定的数据范围。对于更大的数据规模,可以考虑使用HashSet来优化查找速度,但本题的数据范围下当前解法已经足够。题目模拟了一个机器翻译软件的工作过程,要求我们计算在给定内存容量下,翻译一篇文章需要查询词典的次数。内存采用先进先出(FIFO)的替换策略。:O(N*M),其中N是文章长度,M是内存容量。对于每个单词,需要检查是否在内存中。:O(M),用于存储内存中的单词。

Java爱好者,热爱分享,信仰开源! 358

P1540 机器翻译洛谷题解

P1540 机器翻译 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。 假设内存中有 M 个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过 M-1,软件会将新单词存入一个未使用的内存单元;若内存

YCU_poison的博客 824

NOIP201005机器翻译 题解

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

weixin_42178241的博客 513

【NOIP2010】【模拟】T1 机器翻译 题解

1.机器翻译 (translate.pas/c/cpp) 【问题描述】 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义 来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有, 软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中 文含

It's Maverick. 712

半导体关键系统之RMS浅谈

这种系统还要求设备在设备上的配方发生变化时通知工厂主机,并需要与EAP(Equipment Automation Process)联结,旨在实时管控自动化系统所用配方与用户当初的设定是否匹配,从而使得自动化系统所用的配方更加趋于安全。例如,制药行业中的药品生产管理系统(GMP),它对药品的生产过程进行严格控制,包括原材料的采购、生产工艺流程、质量控制等方面。这些系统通常与企业的生产系统集成,能够对产品的配方进行精细化管理,包括配方的设计、试验、验证、生产等环节。

阿拉伯梳子的专栏 6155

算法竞赛题解多语言生成:Hunyuan-MT 7B实战

本文介绍了如何在星图GPU平台上自动化部署Hunyuan-MT 7B全能翻译镜像,实现算法竞赛题解的多语言生成。该镜像支持33个语种互译,特别擅长处理技术术语和编程语境,可准确翻译包含代码和数学公式的算法题解,助力全球开发者无障碍交流解题思路。

weixin_34163588的博客 202

L298N电机驱动模块的接线使用与代码实现

#include "iostm8s208mb.h" #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; // 关于LED灯的宏定义 #define LED2 PI_ODR_ODR2 //输出量 #define LE

Clichong 13万+

使用Hunyuan-MT-7B构建算法竞赛题解翻译系统

本文介绍了如何在星图GPU平台上自动化部署Hunyuan-MT-7B镜像,快速构建多语言算法题解翻译系统。该系统能精准翻译包含代码和数学公式的技术内容,支持33种语言互译,有效帮助开发者突破语言障碍,学习和分享国际算法竞赛的优秀解题思路。

weixin_30415591的博客 314

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 392

科研绘图(二):R 语言实现小鼠脑图谱 3D 渲染,附完整代码与数据获取指南

在生物医学科研中,脑区的 3D 可视化是呈现实验结果、解析脑结构功能的重要手段。R 语言凭借rgl和Rvcg等工具包,可高效实现小鼠全脑及特定脑区(如 CA1 区)的立体渲染,且代码可复用性强。本文将从环境搭建、数据准备、代码实现到结果导出,手把手带你完成小鼠脑图谱 3D 绘图,小白也能快速上手!

good_rrrrr的博客 2023

基于Hunyuan-MT-7B的算法竞赛题解翻译系统

本文介绍了如何在星图GPU平台自动化部署Hunyuan-MT-7B镜像,构建算法竞赛题解翻译系统。该系统能智能处理专业术语、数学公式和代码片段,实现高质量的多语言题解翻译,帮助全球算法爱好者无障碍分享和学习解题思路。

weixin_35433448的博客 314

OpenHarmony-AI调研

基于OpenHarmony-5.0.0版本以及laval社区等网络资料调研当前OH上的AI发展情况。

qqq1112345的博客 1369

NOIP2010 机器翻译 题解

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

persist 1428

经典烧脑算法逻辑题--高楼扔鸡蛋:最少次数测出鸡蛋摔碎临界点。

如果在第2层没碎,换到第3层扔.......如果第59层没碎,换到第60层扔;有2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度。比如鸡蛋在第9层没有摔碎,在第10层摔碎了,那么鸡蛋不会摔碎的临界点就是9层。因此,我们尝试每10层扔一次,第一次从10层扔,第二次从20层扔,第三次从30层......一直扔到100层。如果第一枚鸡蛋,在50层碎了,第二枚鸡蛋,就从第1层开始扔,一层一层增长,一直扔到第49层。如果第一枚鸡蛋在50层没碎了,则继续使用二分法,在剩余楼层的一半(75层)往下扔。

借雨醉东风的博客 1818

Autosar入门_OS_5

os hook函数说明

u012406840的博客 398

牛客 机器翻译 题解

牛客 机器翻译 题解

m0_73050929的博客 248

HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:安全测试

通过对HarmonyOS应用生命周期建模和应用攻击面建模,采用静态数据流分析技术,提高漏洞发现的准确率,同时覆盖20余种攻击面,65+漏洞测试项,帮助开发者提前发现和识别漏洞隐患。在检测报告中,会针对每一项漏洞风险项给出明确的修复建议,可以帮助开发者快速修复漏洞。

斌擎科技 1182

MT码题解

【代码】MT码题解。

kay3123的博客 518

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[NOIP2010 提高组] 机器翻译 题解

本文讲解 [NOIP2010 提高组] 机器翻译 题解,一道普及—的队列题。

本人没什么优点,唯一的优点就是有一个优点。 762

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

机器翻译题解(很简单)

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

ljmhxs的博客 921

P1540机器翻译题解复盘

【代码】P1540机器翻译题解复盘。

2604_96548757的博客 201

P1540 机器翻译题解<vector>

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

qq_43301061的博客 457

「NOIP2010」机器翻译 题解

这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。上述提到,数组要设置两个,一个是文章,一个是内存单元,我们用拼音来表示,方便辨认,再运用一个自定义函数,负责寻找单词。在测评平台上会有那么一个测试点有几个数字是0,所以判断时一定要写一个等于0的情况,否则可能无法正常AC。//给了一个数组设置提示。

brx0128的博客 321

noip2010T1机器翻译题解

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

Ostmbh的博客 1090
上一篇: DEV-C++安装教程
下一篇: C++趣味编程【时钟】
Hound1101001
博客等级 码龄3年 10粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值