NOI’95 “同创杯”全国青少年信息学(计算机)奥林匹克竞赛
分区联赛复赛试题(高中组) (上机编程,完成时间:210分钟)
<1> 编码问题:
设有一个数组A:ARRAY[0..N-1] OF INTEGER;
数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。
例如:N=6时,有: A=(4,3,0,5,1,2) 此时,数组A的编码定义如下: A[0]的编码为0;
A[i]的编码为:在A[0],A[1],?,A[i-1]中比A[i]的值小的个数(i=1,2,?,N-1) ∴ 上面数组A的编码为: B=(0,0,0,3,1,2)
程序要求解决以下问题:
① 给出数组A后,求出其编码。
② 给出数组A的编码后,求出A中的原数据。
<2> 灯的排列问题:
设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,??Nk(k表示不同颜色灯的个数)。
放灯时要遵守下列规则:
①同一种颜色的灯不能分开;
②不同颜色的灯之间至少要有一个空位置。
例如:N=8(格子数) R=2(红灯数) B=3(蓝灯数)
放置的方法有:
R-B顺序
R R R
1 / 56
R R R R R R R R B R B B B B B B B B B B B B B B B B B B-R顺序
B B B B B B B B B B B B B B B B B R B R R R R R R R R R R R
放置的总数为12种。
数据输入的方式为:
N
P1(颜色,为一个字母) N1(灯的数量) P2 N2 ??
Q(结束标记,Q本身不是灯的颜色)
程序要求:求出一种顺序的排列方案及排列总数。
<3> 设有一个四层的积木块,1~4层积木块的数量依次为:5,6,7,8 如下图所示放置: 2 8 3 15 4 8 1 5 4 16 3 9 2 14 6
其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。
计算的方法是:第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的:
B C A
计算所用到的计算符为:+,-,?,且无优先级之分(自左向右计算),运算符最多为2个。
如:3+4?5=35 5?4+3=23
可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:
A=B?C+B
也就是:8=2?3+2,15=3?4+3,??14=2?6+2 程序要求:
给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。
① 输入数据不存在出错的情况,同时也不会超过整数的范围。
2 / 56
② 计算时可允许出现以下情况:
A=B (即可理解为运算符的个数为零) A=B?B+B (即全部由B产生)
第二届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题
(高中组 竞赛用时:3小时)
1.比赛安排(20分)
设有有2 n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2 n – 1天内每个队都与不同的对手比赛。 例如n=2时的比赛安排: 队 1 2 3 4 比赛 1==2 3==4 一天 1==3 2==4 二天 1==4 2==3 三天 2.数制转换(20分)
设有一个字符串A$的结构为: A$=‘m
程序要求:从键盘上读入A$后(不用正确性检查),将A$中的数字串m(n进制),以p
进制的形式输出。
例如:A$=‘48<10>8‘
其意义为:将10进制数48,转换成8进制数输出。 输出结果为:48<10>=60<8>
4.挖地雷(30分)
在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。
例如:
V1 V 2 V3 V4 V5 [题目要求]
当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。
输入格式: N: (表示地窖的个数)
W1,W2,W3,……WN (表示每个地窖中埋藏的地雷数量)
3 / 56
历届noip提高组复赛试题



