【2022年11月30日】

本文介绍了四道编程竞赛题目,包括书架的书籍插入问题、山洞逃脱策略、幼儿园小朋友矛盾解决和高速公路路标设置。题目涉及数组操作、图论、最优化策略等算法,适合提高编程思维和解决问题的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

试题名称

书架

脱险

小朋友

路标设置

主文件名

book

escape

kiddie

road

输入文件名

Book.in

escape.in

kiddie.in

road.in

输出文件名

Book.out

escape.out

kiddie.out

road.out

试题类型

非交互式程序题

非交互式程序题

非交互式程序题

非交互式程序题

满分

100

100

100

100

附加文件

时限

2秒

1秒

1秒

1秒

关于比赛时选手文件保存的说明:

由于全国NOIP联赛中出现了很多关于文件存储不当而失分的例子,为了简单而且方便裁判评测,规定文件存放格式如下:

每个选手建立一个名称为自己ID的目录,例如SC-001。把所有题目的解答源代码均直接放入此目录,不需要建立任何二级目录

例如比赛题目有四题,分别为energy, budget, jsp, digital。此选手ID为SC-100。

选手应该在自己本机规定位置建立一个名称为”SC-100”的目录,并且把energy.pas, budget.pas, jsp.pas, digital.pas文件(假定选手使用pascal语言)都直接存入这个SC-100目录下,请选手们不要建立每个题目的二级子目录。

另外请选手注意:上交文件必须有此到题目的源代码,也就是.pas, .c或者.cpp文件,其他文件(例如.exe可执行文件, .in输入文件, .txt文本文件等等)均视为无用文件。

                                  

                          

【题目描述】

Knuth先生家里有个精致的书架,书架上有N本书,如今他想学到更多的知识,于是又买来了M本不同的新书。现在他要把新买的书依次插入到书架中,他已经把每本书要插入的位置标记好了,并且相应的将它们放好。由于Knuth年龄已大,过几天他已经记不清某些位置上放的到底是什么书了,请问你能帮助他吗?

【输入】

输入文件的第一行为整数N,接下来N行分别是书架上依次放着的N本书的书名(书名由不含空格的字符串构成,长度不超过10)。下一行将要输入一个整数M,接下来的M行分别为这本书的书名和要插入的位置。下一行将要输入一个整数Q,接下来共有Q次询问,每行都是一个整数表示询问的位置。(书架上位置的编号从0开始)

【输出】

     输出Q行,每行对应着相应查询位置的书名。

【样例输入输出】

book.in

3

Math

Algorithm

Program

2

Picture 2

System 1

3

0

1

3

book.out

Math

System

Picture

【样例说明】

原来有三本书Math、Algorithm、System,后来又买了两本书,分别插入到2和1的位置,每次插入时其他书都要向后挪一个位置,最后书架上书的序列为:

0 à Math

1 à System

2 à Algorithm

3 à Picture

4 à Program

Q次询问依次为0, 1, 3位置的书,所以答案为:Math、System、Picture

【数据规模与约定】

对于30%的数据,1 ≤ N ≤ 100,  1 ≤ M ≤ 103,  1 ≤ Q ≤ 103

对于100%的数据,1 ≤ N ≤ 200,  1 ≤ M ≤ 105,  1 ≤ Q ≤ 104

对于100%的数据都符合题目中所描述的限制关系,数据保证每次插入的位置均不超过当时书架上书的数量,而且保证Q次查询中的每个位置上一定有书。

                                  

                          

【题目描述】

一批探险队员正在一个迷宫一样的山洞里摸索,突然他们得到了一个糟糕的消息,由于附近发生地震,这个山洞将有可能在T个单位时间后坍塌。现在他们要用最快的速度找出一个方案,使得在T个单位时间内逃出的队员最多。已知探险队员在一个单位时间内可以向前后左右任一方向移动一格,也可以停留在原地不动。有一个糟糕的情况是,虽然山洞的内部比较宽敞,但山洞的出口都非常狭窄,一个单位时间只能允许一名队员通过。

山洞的地图用一个R*C的字符矩阵表示,其中'.'表示在开始的时候没有探险队员的空地,空地可以容纳任意多的探险队员;'P'表示在开始的时候有探险队员的空地,我们假设在开始的时候所有的队员都在不同的位置上,且没有队员恰好位于出口所在的方格;'*'表示障碍物,探险队员不能经过被障碍物占据的方格;'O'(大写字母O)表示出口,输入数据保证出口一定位于地图的边界上,即只有第1行,第R行,第1列,第C列有可能出现'O'。另外,输入数据保证整个地图被边界和出口围住,即第1行,第R行,第1列,第C列只能是'*'或'O'.

【输入】

输入文件的第一行是用空格隔开的两个整数R和C,表示地图的大小。第二行是整数T,即山洞将要坍塌的时间。接下来R行,每行包含C个字符,表示一幅山洞地图。

【输出】

     输出一行,包含一个整数,即T个单位时间内最多能逃出的人数。

【样例输入输出】

escape.in

5 5

4

*****

*P..*

O**.O

*P..*

*****

escape.out

1

【样例说明】

山洞有两个出口,但只有右边的出口是可以到达的。虽然在3个单位时间内两人都可以到达出口左侧的方格处,但由于在出口处一个单位时间只能允许一人通过,故4个单位时间内只能逃出一人。两人都逃出需要5个单位时间。

【数据规模与约定】

对于30%的数据,队员数和出口数均不超过10

对于100%的数据,3 ≤ R, C ≤ 12,0 < T ≤ 50

                                  

                          

【题目描述】

幼儿园里有N个小朋友,老师要从中选出来一部分做丢手绢的游戏,可是老师没有想到这么小的孩子里面有些人之间还有矛盾。老师想找出尽量多的小朋友去玩游戏,但是又很头疼,他不想看到找出来玩游戏的小朋友里面还有任何两个人之间存在着矛盾。如果告诉你小朋友之间存在的M对矛盾关系,你能否帮助幼儿园老师计算出他最多可以选出多少个小朋友来做这个丢手绢的游戏?

关于矛盾限制的说明:

如果我们把存在着矛盾的两个小朋友看作是无向图中相连的两个点,那么题目中的数据保证M对矛盾所构成的图中不会有超过3个点的环。(图1符合要求,图2则不符合)

正在上传…重新上传取消

【输入】

输入文件的第一行是用空格隔开的两个整数N和M,表示一共有N个小朋友,这些小朋友之间有M对矛盾关系。接下来的M行,每行将有一对整数a和b(用空格隔开),表示小朋友a与小朋友b有矛盾。(小朋友的编号都是从1开始的)

【输出】

     输出一行,包含一个整数,即幼儿园老师最多可以选出来做游戏的人数。

【样例输入输出】

kiddie.in

5 6

1 2

3 2

1 3

3 5

3 4

4 5

kiddie.out

2

【样例说明】

幼儿园有6个小朋友,矛盾关系中1 - 2 - 3组成一个环,3 - 4 - 5组成一个环,因此只能在这两个环中分别选一个小朋友,并且不能选择3号小朋友。

【数据规模与约定】

对于20%的数据,1 ≤ N ≤ 20

对于40%的数据,1 ≤ N ≤ 50

对于100%的数据,1 ≤ N ≤ 200

对于100%的数据都符合题目中所描述的矛盾限制关系。

                                  

                          

【题目描述】

B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离定义为该公路的“空旷指数”。现在政府决定在公路上增设一些路标,使得公路的“空旷指数”最小。他们请求你设计一个程序计算能达到的最小值是多少。

请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位距离。

【输入】

第1行包括三个数L、N、K,分别表示公路的长度,原有路标的数量,以及最多可增设的路标数量。

第2行包括递增排列的N个整数,分别表示原有的N个路标的位置。路标的位置用距起点的距离表示,且一定位于区间[0,L]内。

【输出】

     输出1行,包含一个整数,表示增设路标后能达到的最小“空旷指数”值。

【样例输入输出】

road.in

101 2 1

0 101

road.out

51

【样例说明】

公路原来只在起点和终点处有两个路标,现在允许新增一个路标,应该把新路标设在距起点50或51个单位距离处,这样能达到最小的空旷指数51。

【数据规模与约定】

50%的数据中,2 ≤ N ≤100,0 ≤K ≤100

100%的数据中,2 ≤N ≤100000, 0 ≤K ≤100000

100%的数据中,0 < L ≤10000000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值