2011年安联杯安徽省青少年信息学奥林匹克竞赛(中学组试题)

来源:互联网 发布:银背大猩猩力量数据 编辑:程序博客网 时间:2024/05/16 19:00
AOI 2011

 

比赛时间:2011年4月16日8:00至12:00

 


题目名称

迷宫密码

重重机关

开心农场

武林大会

源文件名

sum.pas/c/cpp

maze.pas/c/cpp

farm.pas/c/cpp

match.pas/c/cpp

输入文件名

sum.in

maze.in

farm.in

match.in

输出文件名

sum.out

maze.out

farm.out

match.out

试题类型

传统型

传统型

传统型

传统型

满分

100

100

100

100

是否有部分分

时限

1秒

1秒

1秒

1秒

内存限制

128M

128M

128M

128M


 

注意事项

1.    务必看清题目,严格按照所要求的格式输入、输出。

2.    在调试程序时请先使用题目中的示例数据,然后再自行设计多组测试数据进行调试。

3.    测试有严格的时间限制,请尽可能优化算法。

4.    命名规则:
(1)每题都规定了该题的英文名称。
(2)程序文件和数据文件的主文件名都是该题的英文名字。
(3)程序文件扩展名采用语言环境的默认扩展名。
(4)数据文件都是文本文件,输入和输出文件的扩展名分别是.in和.out。

5.    程序应从输入文件读取数据,并严格地按照规定的输出格式将结果输出到输出文件中。输入数据文件和输出数据文件都与程序在同一个目录中,由于程序所在目录是不确定的,因此不允许在程序中含有盘符信息和任何形式的路径信息。

6.    选手在竞赛结束时应在D盘根目录下建立以参赛号命名的文件夹,并将所完成各题的源程序文件放到该文件夹中。测试以评测组编译的可执行文件为准,测试系统使用的是标准的编译指令处理源程序,没有附加任何编译选项,请选手按照考试机器上语言环境的默认配置来编译调试自己的程序。

 

题目

1.    迷宫密码(sum)

猪无戒将蓝兔关在了一座迷宫里。虹猫来到紧闭的迷宫大门前,发现需要输入密码才能将大门打开。守门人告诉他密码就隐藏在门旁的一个方形木盘中。方形木盘中有M行N列格子,每个格子中刻有一个数字,虹猫需要选择一个数字之和最大的长方形区域来开启迷宫大门。虹猫应该怎么做呢?

 

输入:共M+1行,第一行为正整数M(1≤M≤500)和N《1≤N≤500)(中间用空格隔开),表示木盘上有M行N列的格子。接下来的M行,每行有N个整数(中间用空格隔开),表示格子中的数字,取值范围是[-500,500]。

 

输出:一个整数,表示数字之和最大的长方形区域内的数字和。

 

样例:

输入(sum.in):

5 4

-1 -2 -3 -4

-3 -2 2 4

-3 -4 3 5

4 -5 3 6

-3 -2 -1 0

输出(sum.out):

23

限制:

50%的数据,1≤M≤50,1≤N≤50

90%的数据,1≤M≤100,1≤N≤100

100%的数据,1≤M≤500,1≤N≤500

 

2.    重重机关(maze)

虹猫终于开启了迷宫的大门,守门人告诉虹猫迷宫里没有水和食物,因此虹猫必须以最快的速度救出蓝兔。守门人还把迷宫的一些情况告诉了虹猫。这座迷宫共有N个密室,入口密室编号为1,蓝兔所在的密室编号为N。各密室之间一共有M条单向密道。部分密道入口处有机关,这些机关最初是关闭的,一旦有人进入迷宫,所有机关就会按照预先设定的各自的时间间隔S和C循环关闭和开启。如果进入某条密道时恰好该密道入口处的机关处于开启状态,就会被机关困住,需要一定时间E才能挣脱机关继续前进。

除N号密室外,迷宫的所有地面都无法停留,否则地面就会陷落,虹猫只能马不停蹄地一直往前走。设虹猫进入迷宫的时刻为0,N个密室的通过时间可以忽略不计,通过密道则需要一定的时间T,请你帮助虹猫用最短的时间到达N号密室救出蓝兔。

输入:共M+1行,第一行为正整数N和M(中间用空格隔开)(1≤N≤10000,1≤M≤1000000),分别表示密室的数量和密道的数量。接下来共M行,每行有6个整数(中间用空格隔开),分别是U、V、T、S、C、E,其中U、V表示该条密道由密室U通往密室V(1≤U、V≤N);T表示通过该密道需要T分钟(1≤T≤200);S和C表示密道入口机关在有人进入迷宫S分钟后开启,保持开启状态C分钟后关闭,然后保持关闭状态S分钟后再度开启,循环往复(0≤S、C≤200,且S、C不同时为0);E表示一旦被机关困住,需要E分钟才能挣脱机关继续前进(1≤E≤600)。

以下面的一行输入数据为例:

           3 4 6 2 1 7

表示该密道从3号密室连接到4号密室,通过该密道需要6分钟,在有人进入迷宫后,该密道入口的机关在[0,2)时间区间为关闭状态(如果时刻t在 [a,b)时间区间,则有a≤t<b),[2,3)时间区间为开启状态,[3,5)时间区间为关闭状态,循环往复。也就是说,如果虹猫在2分(含2分)到3分(不含3分)之间进入该密道,此时机关恰好是开启状态,他会被机关困住,需7分钟才能挣脱;而如果他在3分(含3分)到5分(不含5分)之间进入密道,则此时机关恰好是关闭状态,不会被机关困住。

 

输出:一个正整数,表示虹猫到达N号密室的最短时间(单位:分钟)。

 

样例:

输入(maze.in):

4 5

1 2 1 3 2 2

1 3 5 4 2 6

2 1 2 3 0 3

2 4 3 0 1 5

3 4 6 2 1 7

 

输出(maze.out)

9

 

限制:

40%的数据,N≤100,M≤1000

100%的数据,N≤10000,M≤1000000

所有数据保证1号密室到N号密室连通。

 

3.    开心农场(farm)

虹猫成功救出蓝兔后,为了帮助蓝兔摆脱心理阴影,和蓝兔一起玩起了开心农场的游戏。这个游戏开始时有一个体验期,系统会分配给玩家一定数量的金币。规定在同一时期只能种植一种作物,但是只要金币允许,玩家可以在土地上种植任意多的同一种作物。种子需要一定费用,作物一旦成熟玩家就收获并售出作物。系统将根据玩家在体验期结束时所拥有的金币数量给予相应奖励(如果作物在体验期结束的时刻尚未成熟,则不计入在内)。农场中的作物有的在体验期内全时段开放种植,而有的则只能在某个时段种植。每种作物播种以后需要经过一定的时间才会成熟,而播种、收获的时间可以忽略不计。虹猫是个爱思考的孩子,他想在体验期内获得最多的金币,应该怎么做呢?

 

输入:共K+1行,第一行有3个正整数M、D和K,分别用一个空格隔开,其中M表示游戏开始时所拥有的金币数量(1≤M≤200),D表示体验期的时长(1≤D≤10000,单位:小时),K表示作物的种类数(1≤K≤5000)。接下来K行,每行有5个用空格隔开的非负整数,分别是S、F、T、B、E,其中S表示该作物的种子单价(1≤S≤100),F表示该作物的售出价格(S≤F≤1000),T表示该作物成熟需要的时间(1≤T≤100,单位:小时),B和E分别表示该作物可以种植的开始时间和结束时间(即若当前时刻为t,且Bi≤t<Ei,则此时第i种作物可以播种,且其成熟时间可在Ei时刻以后,1≤i≤K;B、E单位为时,0≤B≤D,B<E≤10000)。

 

输出:一个正整数,表示体验期结束时虹猫能够拥有的最多金币数。

 

样例:

输入(farm.in):

11 2 2

10 15 1 0 2

12 20 1 0 2

 

输出(farm.out):

24

 

限制:

40%的数据,D≤100,K≤10

100%的数据,D≤10000,K≤5000

 

4.    武林大会(match)

虹猫和好朋友们组队参加武林大会,最终的决赛在他和猪无戒的参赛组之间展开。比赛规则如下:两个组都必须出N个选手,每个选手必须与对方组的一个选手进行一场比赛,且只能进行一场比赛。经过对本组组员和对方组员使用的武器和武功的分析,虹猫得出了自己组中的每个成员与对方组员比赛时的取胜概率pij%(其中pij为非负整数,0≤pij≤100,1≤i,j≤N)。虹猫经过细心的计算,发现了一种对阵方式,能使得虹猫组的平均取胜概率最大,其中平均取胜概率为某种对阵方式下,虹猫组所有组员取胜概率之和的平均值向下取整(例如,73.635向下取整的值为73)。你知道虹猫是怎么做的吗?

 

输入:共N+1行,第一行为正整数N(1≤N≤200),表示每个组的参赛队员数。接下来N行,每行有N个不大于100的用空格隔开的非负整数,其中第i行的第j个数字表示虹猫组的第i个组员对猪无戒组的第j个组员的取胜概率pij%( 0≤pij≤100,1≤i,j≤N)。

 

输出:一个正整数,表示虹猫组的最大平均取胜概率。

 

样例:

输入(match.in):

4

40 50 30 70

80 30 40 70

50 60 70 80

90 10 20 30

 

输出(match.out):

70

 

限制:

20%的数据,1≤N≤8

60%的数据,1≤N≤15

100%的数据,1≤N≤200

原创粉丝点击