前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法专题(2)-模拟

算法专题(2)-模拟

作者头像
用户5325900
修改2019-12-03 18:43:31
4050
修改2019-12-03 18:43:31
举报
文章被收录于专栏:信息学信息学信息学

摘要

本次系列文章主要介绍信息学以下知识点:

今天我们主要学习 模拟 这部分内容:

二、 模拟

概述:

模拟题在NOIP中十分常见,一般属于简单题,需要拿满分。模拟题需要理解题意,按照题目要求的直接进行模拟过程,或者按照题目要求模拟一些数据结构。模拟题最关键的是理解题意与细心。

1.知识点梳理:

Ø 模型建立与算法设计

模拟题题目可能会很繁琐,需抽取关键词,建立模型,再设计算法。算法设计过程中,需要考虑其完整性,即包含题目中所给的全部条件。

Ø 代码编写与调试

代码编写时,在题目条件相关的部分应写注释。调试时,需要根据题目中的条件构造数据测试。

2.重难点分析:

u 题意理解非常重要,必须考虑题目中的所有条件。

u 做题时要细心,并构造数据仔细测试,简单题必须拿满分。

3. 例题解析:

例题2-1:铺地毯(NOIP2011)

【问题描述】为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n (n≤10000) 张地毯,编号从 1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

下图显示了一个三张地毯的铺地毯方式,其中实线为1号地毯,虚线为2号地毯,双实线为3号地毯,红点为所求点。

【分析】本题为简单模拟题,只要从前往后扫描所有地毯,模拟盖地毯的过程。如果当前地毯覆盖了所求点,则更新地毯编号。最后输出地毯编号即可。算法复杂度为O(n)。

例题2-2:机器翻译(NOIP2010)

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

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

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

【分析】本题为模拟题,模拟队列形式。维护一个长度为M的队列,每次查找时,先查找队列内的数字是否包含,若不是,则将该数字插入队列,读取次数加一。算法复杂度为O(NM)。

例题2-3:字符串展开(NOIP2007)

【问题描述】在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:

(1) 遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。

(2) 参数p1:展开方式。p1=1时,对于字母子串,填充小写字母;p1=2时,对于字母子串,填充大写字母。这两种情况下数字子串的填充方式相同。p1=3时,不论是字母子串还是数字字串,都用与要填充的字母个数相同的星号“*”来填充。

(3) 参数p2:填充字符的重复个数。p2=k表示同一个字符要连续填充k个。例如,当p2=3时,子串“d-h”应扩展为“deeefffgggh”。减号两边的字符不变。

(4) 参数p3:是否改为逆序:p3=1表示维持原来顺序,p3=2表示采用逆序输出,注意这时候仍然不包括减号两端的字符。例如当p1=1、p2=2、p3=2时,子串“d-h”应扩展为“dggffeeh”。

(5) 如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:“d-e”应输出为“de”,“3-4”应输出为“34”。如果减号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,要保留中间的减号,例如:“d-d”应输出为“d-d”,“3-1”应输出为“3-1”。

【输入】

输入包括两行:

第1行为用空格隔开的3个正整数,一次表示参数p1,p2,p3。

第2行为一行字符串,仅由数字、小写字母和减号“-”组成。行首和行末均无空格。

【输出】

输出只有一行,为展开后的字符串。

【样例输入】

1 2 1

abcs-w1234-9s-4zz

【样例输出】

abcsttuuvvw1234556677889s-4zz

【分析】本题为模拟题,应全面分析题目中的五个条件。条件(1)说明了展开序列特点,条件(2)(3)(4)说明了三个参数的用途,条件(5)说明了另一种展开情况。题意理解后,本题就分类讨论即可。

需要注意的是,由于本题中条件较多,需要对于每个条件构造相应的样例(或构造一个样例拥有所有的条件),并构造不同的参数样例来测试程序。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、 模拟
  • 概述:
    • 1.知识点梳理:
      • 2.重难点分析:
        • 3. 例题解析:
          • 例题2-1:铺地毯(NOIP2011)
          • 例题2-2:机器翻译(NOIP2010)
          • 例题2-3:字符串展开(NOIP2007)
      相关产品与服务
      机器翻译
      机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档