历届noip提高组复赛试题

NOI’ 95“同创杯”全国青少年信息学(计算机)奥林匹克竞赛

分区联赛复赛试题(高中组)

(上机编程,完成时间:210 分钟)

<1>编码问题:

设有一个数组A:ARRAY[0..N-1] OF INTEGER;

数组中存放的元素为0~N-1 之间的整数,且A[i]≠ A[j](当i≠ j时)。

例如: N=6 时,有:

此时,数组 A 的编码定义如下:A[0] 的编码为0;

A[i] 的编码为:在A[0] ,A[1]∴上面数组 A 的编码为:

A= ( 4,3, 0, 5,1, 2)

,, A[i-1] 中比 A[i] 的值小的个数(

B= (0, 0,0,3,1, 2)

i=1 ,2,, N-1 )

程序要求解决以下问题:

①给出数组 A 后,求出其编码。

②给出数组 A 的编码后,求出 A 中的原数据。

<2> 灯的排列问题:

设在一排上有 N 个格子( N≤ 20),若在格子中放置有不同颜色的灯,每种灯的个数记为 N 1, N2, N k( k 表示不同颜色灯的个数)。

放灯时要遵守下列规则:

①同一种颜色的灯不能分开;

②不同颜色的灯之间至少要有一个空位置。

例如: N=8 (格子数)

R=2 (红灯数)

B=3 (蓝灯数)

放置的方法有:

R-B 顺序

R R B B B

R R B B B

R R B B B

R R B B B

R R B B B

R R B B B

B-R顺序

B B B B

B

B

B

B

B

B

B

B

B

B

B

B

B

R R

R

R

B

R

R

R

R

R

R

R

R

放置的总数为12 种。

数据输入的方式为:

N

P1(颜色,为一个字母)P2N1(灯的数量)N2

Q(结束标记, Q 本身不是灯的颜色)

程序要求:求出一种顺序的排列方案及排列总数。

<3> 设有一个四层的积木块,1~ 4 层积木块的数量依次为:5, 6,7, 8

如下图所示放置:

8158516914

23414326

其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出

来的。

计算的方法是:第三层的某个数据 A 是由第四层相邻的两个数据 B, C 经过某种计算后产生的:

A

B C

计算所用到的计算符为:+,-,,且无优先级之分(自左向右计算),运算符最多为2个。

如: 3+4 5=35 5 4+3=23

可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:

A=B C+B

也就是: 8=2 3+2 , 15=3 4+3, 14=26+2

程序要求:

给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,

完整的积木图及计算公式。

并输出整个

① 输入数据不存在出错的情况,同时也不会超过整数的范围。

② 计算时可允许出现以下情况:

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==23==4一天

1==32==4二天

1==42==3三天

2.数制转换(20 分)

设有一个字符串A$ 的结构为:A$=’ mp’

其中 m 为数字串(长度 <=20),而 n,p 均为 1 或 2 位的数字串(其中所表达的内容在2-10之间)。

程序要求:从键盘上读入A$ 后(不用正确性检查),将 A$ 中的数字串m(n 进制 ),以 p 进制的形式输出。

例如: A$=’ 48<10>8 ’

其意义为:将10 进制数 48,转换成8 进制数输出。

输出结果为:48<10>=60<8>

4.挖地雷( 30 分)

在一个地图上有 N 个地窖( N<=20 ),每个地窖中埋有一定数量的地雷。同时,给出地

窖之间的连接路径。

例如:

V1V2V3V4

V 5

[题目要求 ]

当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能

挖到最多的地雷。

输入格式:N:(表示地窖的个数)

W1, W2,W3, W N(表示每个地窖中埋藏的地雷数量)

A 12.A1N

地窖之间连接路径(其中Aij =1表示地窖 i,j

A 23..A 2N

之间是否有通路:通Aij=1, 不通 Aij==0 )

..

A N-1N

输出格式:

K 1--K 2--.K V(挖地雷的顺序)

MAX(挖地雷的数量)

例如:

⑩-------- ⑧④-----⑦ -------⑥

其输入格式为:输出:

51–3-4-5

10, 8, 4,7, 6max=27

1110

000

11

1

4.砝码称重( 30 分)

设有 1g、 2g、 3g、 5g、 10g、 20g 的砝码各若干枚(其总重<=1000),

要求:

输入方式: a1a2a3a4a5a6

(表示 1g 砝码有 a1 个, 2g 砝码有 a2 个,, 20g 砝码有 a6 个)输出方式: Total=N

(N 表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不

用的情况)

如输入: 1_1_0_0_0_0(注:下划线表示空格)

输出: TOTAL=3表示可以称出1g, 2g, 3g 三种不同的重量。

第三届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

(高中组竞赛用时: 3 小时)

1.在 N*N 的棋盘上( 1≤ N≤ 10),填入 1, 2,, N*N 共 N*N 个数,使得任意两个相邻的数之和为素数。( 30%)

例如:当N=2 时,有:

其相邻数的和为素数的有:

12

1+2 ,1+4 , 4+3, 2+3

43

当 N=4 时,一种可以填写的方案如下:

121112

161585

134914

67103

在这里我们约定:左上角的格子里必须填数字1。

程序要求:

输入: N;

输出:如有多种解,则输出第一行、第一列之和为最小的排列方案;若无解,则

输出“ NO!”。

2.代数表达式的定义如下:

a

字母

b

c

例如,下面的式子是合法的代数表达式:

a;

a+b*(a+c);

a*a/(b+c)

下面的式子是不合法的代数表达式:

ab;

a+a*/(b+c);

程序要求:

输入:输入一个字符串,以“;”结束,“;”本身不是代数表达式中字符,仅作为结束);

输出:若表达式正确,则输出“OK”;若表达式不正确,则输出“ ERROR ”,及错误类型。

错误类型约定:

1.式了中出现不允许的字符;

2.括号不配对;

3.其它错误。

例如:输入:例如:输入:a+(b);

a+(b+c*a;

输出:

输出:

OK

ERROR 2

3.骑士游历:

设有一个 n*m 的棋盘( 2≤ n≤ 50, 2≤m≤ 50),如下图,在棋盘上左下角有一个中国

象棋马。

( n,m)

(1,1)

马走的规则为:

( 1)马走日字;

( 2)马只能向右走

即如下图如示:

任务 1:当 n,m 输入之后,找出一条从左下角到右上角的路径。

例如,输入:n=4, m=4

(4,4)

(1,1)

输出:路径的格式:(1,1) → (2,3)→ (4,4)。若不存在路径,则输出‘NO ’

任务 2:当 n, m 给出之后,同时给出马起点的位置和终点的位置,试找出从起点到终点的所有路径的数目。

例如:(n=10,m=10 ),(1, 5)(起点),(3, 5)(终点)

10

9

8

7

6

5

4

3

2

1

1 2 3 45 6 78 9 10

输出: 2(即由( 1,5)到( 3, 5)共有 2 条路径)

输入格式: n,m,x1,y1,x2,y2 ( 分别表示n,m,起点坐标,终点坐标输出格式:路径数目(若不存在从起点到终点的路径,输出

) 0)

第四届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

(高中组竞赛用时: 3 小时)

1.火车从始发站(称为第 1 站)开出,在始发站上车的人数为a,然后到达第 2 站,在第 2站有人上、下车,但上、下车的人数相同,因此在第 2 站开出时(即在到达第 3 站之前)车上的人数保持为 a 人。从第 3 站起(包括第 3 站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前

一站(第n-1 站),都满足此规律。现给出的条件是:共有N 个车站,始发站上车的人数为 a,最后一站下车的人数是m(全部下车)。试问 x 站开出时车上的人数是多少?

输入: a, n, m 和 x

输出:从x 站开出时车上的人数。{20%}

2.设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。

例如: n=3 时, 3个整数 13, 312, 343 联接成的最大整数为:34331213

又如: n=4 时, 4个整数 7, 13, 4,246 联接成的最大整数为:7424613

程序输入: n

n个数

程序输出:联接成的多位数{40%}

3.著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。例如:{40%}

其含义为:

+L K V E L+L=L , L+K=K , L+V=V , L+E=E

L L K V E K+L=K , K+K=V , K+V=E , K+E=KL

K K V E KL

E+E=KV

V V E KL KK

E E KL KK KV

根据这些规则可推导出:L=0 , K=1 ,V=2 ,E=3

同时可以确定该表表示的是 4 进制加法

程序输入:

n( n≤ 9)表示行数。

以下 n 行,每行包括n 个字符串,每个字串间用空格隔开。(字串仅有一个为‘+’号,其它都由大写字母组成)

程序输出:

① 各个字母表示什么数,格式如:L=0 ,K=1 ,

② 加法运算是几进制的。

③ 若不可能组成加法表,则应输出“ERROR !”

第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

(提高组竞赛用时:3小时)

第一题拦截导弹 (28 分 )

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发

的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因

此有可能不能拦截所有的导弹。

输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

样例:

INPUT OUTPUT

389 207 155 300 299 170 158 65 6(最多能拦截的导弹数)

2(要拦截所有导弹最少要配备的系统数)第二题回文数 (25 分 )

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

例如:给定一个 10 进制数 56,将 56 加 65(即把 56 从右向左读),得到 121 是一个回文数。

又如:对于 10 进制数 87:

STEP1: 87+78 = 165STEP2: 165+561 = 726

STEP3: 726+627 = 1353STEP4: 1353+3531 = 4884

在这里的一步是指进行了一次N 进制的加法,上例最少用了 4 步得到回文数 4884。

写一个程序,给定一个N( 2<=N<=10或 N=16)进制数 M,求最少经过几步可以得到回文数。

如果在 30 步以内(包含30 步)不可能得到回文数,则输出“Impossible!”

样例:

INPUT OUTPUT

N=9 M=87STEP=6

第三题旅行家的预算(27分)

一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空

的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距

离 D2、出发点每升汽油价格 P 和沿途油站数 N( N 可以为零),油站 i 离出发点的距离 Di 、每升汽油价格 Pi ( i=1 , 2, N)。计算结果四舍五入至小数点后两位。如果无法到达目

的地,则输出“ No Solution ”。

样例:

INPUT

D1=275.6 C=11.9 D2=27.4 P=2.8 N=2

油站号 I离出发点的距离 Di每升汽油价格 Pi

1102.0 2.9

2220.0 2.2

OUTPUT

26.95(该数据表示最小费用)

第四题邮票面值设计(40分)

给定一个信封,最多只允许粘贴 N 张邮票,计算在给定 K( N+K≤ 40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值 MAX,使在 1~ MAX之间的每一个邮资值都能得到。

例如, N=3, K=2,如果面值分别为 1 分、 4 分,则在能得到(当然还有 8 分、 9 分和 12 分);如果面值分别为的每一个邮资值都能得到。可以验证当 N=3,K=2 时, 7 值,所以 MAX=7,面值分别为 1 分、 3 分。

1 分~ 6 分之间的每一个邮资值都1 分、3 分,则在 1 分~7 分之间分就是可以得到的连续的邮资最大

样例:

INPUT OUTPUT N=3 K=2 1 3

MAX=7

2000 年

题一进制转换(18 分)问题描述

我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所

处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可表示为1*102+2*101+3*100这样的形式。

与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位

置的(值-1)为指数,以2为底数的幂之和的形式。一般说来,任何一个正整数R或一个

负整数-R都可以被选来作为一个数制系统的基数。如果是以R或-R为基数,则需要用到的数码为0,1,....R-1。例如,当R=7时,所需用到的数码是0,1,2,3,

4,5和6,这与其是R或-R无关。如果作为基数的数绝对值超过10,则为了表示这些数码,通常使用英文字母来表示那些大于9的数码。例如对16进制数来说,用A表示10,用B表示11,用C表示12,用D表示13,用E表示14,用F表示15。

在负进制数中是用-R作为基数,例如-15(十进制)相当于110001(-2进制),并且它可以被表示为2的幂级数的和数:

110001=1*(-2)5+1*(-2)4+0*(-2)3+0*(-2)2+0*(-2)1+1*(-2)0

问题求解

设计一个程序,读入一个十进制数和一个负进制数的基数, 并将此十进制数转换为此负

进制下的数:-R∈{-2,-3,-4,...,-20}

输入

输入的每行有两个输入数据。

第一个是十进制数N(-32768<=N<= 32767);第二个是负进制数的基数-R。

输出

结果显示在屏幕上,相对于输入,应输出此负进制数及其基数,若此基数超过10,则

参照16进制的方式处理。

样例

输入

30000-2

-20000-2

28800-16

-25000-16

输出

30000=11011010101110000(base-2)

-20000=1111011000100000(base-2)

28000=19180(base-16)

-25000=7FB8(base-16)

提高组题二乘积最大(22 分)问题描述

今年是国际数学联盟确定的“ 2000——世界数学年”,又恰逢我国著名数学家华罗庚先生

诞辰 90 周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活

动,你的一个好朋友 XZ 也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一

道题目:

设有一个长度为N 的数字串,要求选手使用K 个乘号将它分成K+1 个部分,找出一种分法,使得这 K+1 个部分的乘积能够为最大。

同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:

有一个数字串:312,当 N=3 , K=1 时会有以下两种分法:

1) 3*12=36

2)31*2=62

这时,符合题目要求的结果是:31*2=62

现在,请你帮助你的好朋友XZ 设计一个程序,求得正确的答案。

输入

程序的输入共有两行:

第一行共有 2 个自然数N, K ( 6≤ N≤ 40,1≤ K ≤ 6)

第二行是一个长度为N 的数字串。

输出

结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数)。

样例

输入

4 2

1231

输出

62

题三.单词接龙(27 分)

提高组

问题描述

单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出

现两次),在两个单词相连时,其重合部分合为一部分,例如beast 和 astonish,如果接成一条龙则变为 beastonish,另外相邻的两部分不能存在包含关系,例如 at 和 atide 间不能相连。

输入

输入的第一行为一个单独的整数n (n<=20) 表示单词数,以下n 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一

定存在 .

输出

只需输出以此字母开头的最长的“龙”的长度

样例:

输入

5

at

touch

cheat

choose

tact

a

输出

23(连成的“龙”为atoucheatactactouchoose)

提高组题四.方格取数(33分)

问题描述

设有 N*N 的方格图 (N<=10, 我们将其中的某些方格中填入正整数 ,而其他的方格中则放入数字0。如下图所示(见样例):

向右

A 12345678

100000000

2001300600

300007000

4000140000

向5021000400

下6001500000

7014000000

800000000

B

某人从图的左上角的A点出发,可以向下行走,也可以向右走,直到到达右下角的B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。

此人从 A 点到 B 点共走两次,试找出 2 条这样的路径,使得取得的数之和为最大。

输入

输入的第一行为一个整数N(表示 N*N 的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的0 表示输入结束。

输出

只需输出一个整数,表示 2 条路径上取得的最大的和。

样例:

输入

8

2 3 13

2 66

3 57

4 4 14

5 2 21

5 64

6 3 15

7 2 14

000

输出

67

2001 年

题一一元三次方程求解(20分)

问题描述

有形如:ax3 +bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数 ),并约定该方程存在三个不同实根(根的范围在 -100 至 100 之间 ),且根与根之差的

绝对值 >=1 。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格) ,并精确到小数点后 2 位。

提示:记方程f(x)=0 ,若存在 2 个数 x1和 x2,且 x1

样例

输入: 1 -5-420

输出: -2.00 2.00 5.00

题二数的划分(20分)

问题描述

将整数 n 分成 k 份,且每份不能为空,任意两份不能相同( 不考虑顺序) 。

例如: n=7, k=3 ,下面三种分法被认为是相同的。

1,1,5; 1 ,5,1; 5 ,1,1;

问有多少种不同的分法。

输入: n, k (6

输出:一个整数,即不同的分法。

样例

输入:73

输出: 4 { 四种分法为:1,1, 5;1, 2, 4;1,3, 3;2, 2, 3;}

题三统计单词个数(30分 )

问题描述

给出一个长度不超过200 的由小写英文字母组成的字母串( 约定 ; 该字串以每行20 个字母的方式输入,且保证每行一定为20 个 ) 。要求将此字母串分成k 份 (1

数加起来总数最大( 每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能

再用。例如字符串this中可包含this和is,选用this之后就不能包含th)。

单词在给出的一个不超过 6 个单词的字典中。

要求输出最大的个数。

输入格式

去部输入数据放在文本文件input3.dat中,其格式如下:

第一行为一个正整数(0

每组的第一行有二个正整数(p , k)

p 表示字串的行数;

k 表示分为k 个部分。

接下来的p 行,每行均有20 个字符。

再接下来有一个正整数s ,表示字典中单词个数。(1<=s<=6)

接下来的s 行,每行均有一个单词。

输出格式

结果输出至屏幕,每行一个整数,分别对应每组测试数据的相应结果。

样例

输入:

1

13

thisisabookyouareaoh

4

is

a

ok

sab

输出://说明: (不必输出 )

7 // this/isabookyoua/reaoh

题四Car的旅行路线(30分 )

问题描述

又到暑假了,住在城市 A 的 Car 分别位于一个矩形的四个顶点上,市中高速铁路了的单位里程价格为里程的价格均为t 。

图例想和朋友一起去城市 B 旅游。她知道每个城市都有四个飞机场,

同一个城市中两个机场之间有一条笔直的高速铁路,第I个城Ti ,任意两个不同城市的机场之间均有航线,所有航线单位

机场

高速铁路

飞机航线

注意:图中并没有

标出所有的铁路与航线。

那么 Car 应如何安排到城市 B 的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,

于是她来向你请教。

任务

找出一条从城市 A 到 B 的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。

输入文件:键盘输入文件名

输出:到屏幕 ( 输出最小费用,小数点后保留 1 位。)

输入格式

第一行为一个正整数n(0<=n<=10) ,表示有 n 组测试数据。

每组的第一行有四个正整数s, t , A, B。

S(0

接下来有 S 行,其中第 I行均有7 个正整数 xi1,yi1 ,xi2,yi2 ,xi3 ,yi3,Ti ,这当中的 (xi1,yi1) , (xi2 , yi2), (xi3, yi3)分别是第 I 个城市中任意三个机场的坐标,TI 为第 I 个城市高

速铁路单位里程的价格。

输出格式

共有 n 行,每行一个数据对应测试数据。

样例

输入

1

11013

11133130

2574521

86881163

输出:

47.55

2002 年

题一均分纸牌(存盘名NOIPG1 )

[问题描述 ]

有 N 堆纸牌,编号分别为1, 2,, N。每堆上有若干张,但纸牌总数必为N 的倍数。可以在任一堆上取若于张纸牌,然后移动。

移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为N 的堆上取的纸牌,只能移到编号为N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右

边的堆上。

现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。

例如 N=4 ,4 堆纸牌数分别为:

①9②8③17④6

移动 3 次可达到目的:

从③取 4 张牌放到④(981310)-> 从③取 3 张牌放到②(9111010)-> 从②取 1 张牌放到①( 10 10 10 10)。

[输入]:

键盘输入文件名。文件格式:

N(N 堆纸牌, 1 <= N <= 100 )

A1 A2An(N堆纸牌,每堆纸牌初始数,l<= Ai <=10000 )

[输出]:

输出至屏幕。格式为:

所有堆均达到相等时的最少移动次数。‘

[输入输出样例]

a.in:

4

98176

屏慕显示:

3

(存盘名: NOIPG2)

题二字串变换

[问题描述 ]:

已知有两个字串A$, B$及一组字串变换的规则(至多 6 个规则):

A1$ -> B1$

A2$ -> B2$

规则的含义为:在 A $中的子串A1$可以变换为B1$ 、 A2$

可以变换为B2$。

例如: A$= 'abcd'B$= 'xyz'

变换规则为:

‘ abc ’ -> ‘ xu’‘ ud’ ->‘ y’‘ y’ ->‘ yz’

则此时, A$ 可以经过一系列的变换变为B$ ,其变换的过程为:

‘ abcd ’-> ‘ xud ’ -> ‘ xy ’ -> ‘ xyz ’

共进行了三次变换,使得A$变换为B$。

[输入]:

键盘输人文件名。文件格式如下:

A$ B$

A1$ B1$ \

A2$ B2$|->变换规则

... ... /

所有字符串长度的上限为20 。

[输出]:

输出至屏幕。格式如下:

若在 10步(包含10步)以内能将A$变换为B$,则输出最少的变换步数;否则输出"NO ANSWER!"

[输入输出样例]

b.in:

abcd wyz

abc xu

ud y

y yz

屏幕显示:

3

题三自由落体(存盘名:NOIPG3)

[问题描述 ]:

在高为H 的天花板上有n个小球,体积不计,位置分别为0 , 1, 2,. n-1 。在地面上

有一个小车(长为

1/2*g*(t^2),其中L ,高为

g=10 , t

K ,距原点距离为 S1 )。已知小球下落距离计算公式为为

下落时间。地面上的小车以速度 V 前进。

d =

如下图:

小车与所有小球同时开始运动,当小球距小车的距离<= 0.00001时,即认为小球被小车接

受(小球落到地面后不能被接受)。

请你计算出小车能接受到多少个小球。

[输入]:

键盘输人:

H, S1, V,L, K, n ( l<=H , S1, V, L, K, n <=100000 )

[输出]:

屏幕输出:

小车能接受到的小球个数。

[输入输出样例]

[输入]:

5.0 9.0 5.0 2.5 1.8 5

[输出]:

1

题四矩形覆盖(存盘名NOIPG4)

[问题描述 ]:

在平面上有n个点(n <= 50),每个点用一对整数坐标表示。例如:当n = 4 时, 4 个点的坐标分另为:p1( 1, 1), p2( 2, 2), p3( 3, 6), P4( 0, 7),见图一。

这些点可以用k个矩形(1<=k<=4)全部覆盖,矩形的边平行于坐标轴。当k=2时,可用如图二的两个矩形sl,s2覆盖,s1,s2面积和为4。问题是当n个点坐标和k给出后,怎样才能使得覆盖所有点的k个矩形的面积之和为最小呢。约定:覆盖一个点的矩形面积为0 ;覆盖平行于坐标轴直线上点的矩形面积也为0。各个矩形必须完全分开(边线与顶点也都不能重合)。

[输入]:

键盘输人文件名。文件格式为

n k

xl y1

x2 y2

... ...

xn yn ( 0<=xi,yi<=500)

[输出]:

输出至屏幕。格式为:

一个整数,即满足条件的最小的矩形面积之和。

[输入输出样例]

d.in :

4 2

11

22

36

07

屏幕显示:

4

2003 年

乌龟棋 (NOIP2010)复赛 提高组 试题二 解题代码

乌龟棋(NOIP2010)复赛提高组试题二解题代码 分类:C/C++解题代码2011-07-23 18:56 271人阅读评论(2) 收藏举报view plaincopy to clipboardprint? 1. /* 2. 全国信息学奥林匹克联赛(NOIP2010)复赛提高组第二题 3. 【问题描述】 4. 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。 5. 乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数)。棋盘第1 格 是唯一 6. 的起点,第N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。 7. …… 8. 1 2 3 4 5 …… N 9. 乌龟棋中M 张爬行卡片,分成4 种不同的类型(M 张卡片中不一定包含所有4 种 类型 10. 的卡片,见样例),每种类型的卡片上分别标有1、2、3、4 四个数字之一,表 示使用这种卡 11. 片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行 卡片中选择 12. 一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只 能使用一次。 13. 游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格 子,就得到 14. 该格子相应的分数。玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的 所有格子的 15. 分数总和。 16. 很明显,用不同的爬行卡片使用顺序会使得最终游戏的得分不同,小明想要找到 一种卡 17. 片使用顺序使得最终游戏得分最多。 18. 现在,告诉你棋盘上每个格子的分数和所有的爬行卡片,你能告诉小明,他最多 能得到 19. 多少分吗? 20. 【输入】 21. 输入文件名tortoise.in。输入文件的每行中两个数之间用一个空格隔开。 22. 第1 行2 个正整数N 和M,分别表示棋盘格子数和爬行卡片数。

NOIP提高组复赛题目

第一题题库

NOIP2007 1.统计数字 (count.pas/c/cpp) 【问题描述】 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 【输入】 输入文件count.in包含n+1行: 第1行是整数n,表示自然数的个数。 第2~n+1行每行一个自然数。 【输出】 输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

【输入输出样例】 【限制】 40%的数据满足:1<=n <=1000 80%的数据满足:1<=n <=50000 100%的数据满足:1<=n <=200000,每个数均不超过1 500 000 000(1.5*109) NOIP2008 1. 笨小猴 (wird.pas/c/cpp) 【问题描述】 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn 是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn 是一个质数,那么笨小猴就认为这是个Lucky Word ,这样的单词很可能就是正确的答案。 【输入】 输入文件word.in 只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。 【输出】 输出文件word.out 共两行,第一行是一个字符串,假设输入的的单词是Lucky Word ,那么输出“Lucky Word ”,否则输出“No Answer ”; 第二行是一个整数,如果输入单词是Lucky Word ,输出maxn-minn 的值,否则输出0。 【输入输出样例1】 【输入输出样例1解释】 单词error 中出现最多的字母r 出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。

NOIP2012提高组复赛试题

全国信息学奥林匹克联赛(2012)复赛提高组2 2. 1 ·同余方程 〖问题描述〗 求关于的同余方程三1 (句的最小正整数解。 输入〗 输入文件为 输入只有一行,包含两个正整数用一个空格隔开 输出〗 输出文件为 输出只有一行,包含一个正整数№即最小正整数解。输入数据保证一定有解。 〖输入输出样例〗 对于40%的数据,2 L000:对于60%的数据, 2 50,000,000: 对于100%的数据,2,2,000,000,000。 2 ·借教室 (. ) 问题描述〗 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问 题。

我们需要处理接下来n天的借教室信息,其中第i天学校有个教室可供租借。共有m份订单,每份订单用三个正整数描述,分别为d],斗t},表示某租借者需要从第丬天到第t]天租借教室(包括第丬天和第t)天),每天需要租借个教室。 我们假定,租借者对教室的大小、地点没有要求。即对于每份订单,我们只需要每天提供d]个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。 借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。这里的无法满足指从第丬天到第t)天中有至少一天剩余的教室数量不足d)个。现在我们需要知道,是否会有订单无法完全满足。如果有,需要通知哪一个申请人修改 输入〗 输入文件为 第一行包含两个正整数n,m,表示天数和订单的数量。 第二行包含n个正整数,其中第i个数为,表示第i天可用于租借的教室数量。 接下来有m行,每行包含三个正整数],t],表示租借的数量,租借开始、结束分别在第几天。 每行相邻的两个数之间均用一个空格隔开。天数与订单均用从1开始的整数编号。 〖输出〗 输出文件为 如果所有订单均可满足,则输出只有一行,包含一个整数0。否则(订单无法完全满足)输出两行,第一行输出一个负整数一1 ,第二行输出需要修改订单的申请人编号。 〖输入输出样例〗

NOIP2021复赛提高组模拟试题

NOIP2021复赛提高组模拟试题 ccf全国信息学奥林匹克联赛(noip2021)复赛day1 第二轮CCF国家信息学奥林匹克联盟(noip 2022) 提高组day1 (请仔细阅读本页) 一、题目概况中文题目名称英文题目与子目录名可执行文件名输入文件名输出文件名 每个测试点时限测试点数目每个测试点分值附加样例文件结果比较方式题目类型运行内存 上限 二、提交C++语言的源程序文件名,C语言的源程序文件名,Pascal语言的源程序文件名 三、编译命令(不包含优化开关) 对于C++语言对于C语言对于Pascal语言 注意事项: 1.文件名(程序名和输入/输出文件名)必须使用小写英语。 2、c/c++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3.国家统一评估使用的机器配置为cpuamdathlon(TM)64x2dualcorecpu5200+、 2.71ghz和2G内存。以上时限以本配置为准。4.仅提供Linux格式的其他示例文件。 5、特别提醒:评测在noilinux下进行。 6.为了便于评估,请使用您姓名的拼音作为文件夹名称,并将原始程序直接保存在文 件夹中,无需创建新的子文件夹。 g++-opfpf.cpp-g++-otoytoy.cpplmclmgcc-opfpf.c-lmgcc- https://www.360docs.net/doc/4b19218664.html,lmfpcpf.pasfpctoy.pasg++-orunningrunning.cpp-lmgcc- orunningrunning.c- lmfpcrunning.paspf.cpppf.cpf.pastoy.cpptoy.ctoy.pasrunning.cpprunning.crunning .pas斐波那契玩具跑步 pftoyrunningpftoyrunningpf.intoy.inrunning.inpf.outtoy.outrunning.out1s1s1s102 0201055是是是全文比较(忽略行末空格和行尾回车)传统传统传统128mb128mb128mb第1页,共5页 CCF国家信息学奥林匹克联盟(noip2022)半决赛第1天

NOIP2005提高组试题

NOIP2005复赛提高组试题 第十一届全国青少年奥林匹克信息学联赛复赛提高组试题 (提高组三小时完成) 谁拿了最多奖学金(scholar.pas/c/cpp) 【问题描述】 某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得; 2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得; 3) 成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得; 4) 西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得; 5) 班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。 现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。 【输入文件】 输入文件scholar.in的第一行是一个整数N(1 <= N <= 100),表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。每两个相邻数据项之间用一个空格分隔。【输出文件】 输出文件scholar.out包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这N个学生获得的奖学金的总数。 【样例输入】 4 YaoLin 87 82 Y N 0 ChenRuiyi 88 78 N Y 1 LiXin 92 88 N N 0 ZhangQin 83 87 Y N 1 【样例输出】 ChenRuiyi 9000 28700 过河(river.pas/c/cpp)

NOIP1999提高组复赛试题

第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题 (提高组竞赛用时:3小时) 第一题拦截导弹(28分) 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。 样例: INPUT OUTPUT 389 207 155 300 299 170 158 65 6(最多能拦截的导弹数) 2(要拦截所有导弹最少要配备的系统数) 第二题回文数(25分) 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。 写一个程序,给定一个N(2<=N<=10或N=16)进制数M,求最少经过几步可以得到回文数。 如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!” 样例: INPUT OUTPUT N = 9 M= 87 STEP=6 第三题旅行家的预算(27分) 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。

NOIP1995提高组复赛试题

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,……N k(k表示不同颜色灯的个数)。 放灯时要遵守下列规则: ①同一种颜色的灯不能分开; ②不同颜色的灯之间至少要有一个空位置。 例如:N=8(格子数) R=2(红灯数) B=3(蓝灯数) 放置的方法有: R-B顺序 B-R顺序

放置的总数为12种。 数据输入的方式为: N P1(颜色,为一个字母)N1(灯的数量) P2 N2 …… Q(结束标记,Q本身不是灯的颜色) 程序要求:求出一种顺序的排列方案及排列总数。 <3> 设有一个四层的积木块,1~4层积木块的数量依次为:5,6,7,8 如下图所示放置: 其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。 计算的方法是:第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的: 计算所用到的计算符为:+,-,?,且无优先级之分(自左向右计算),运算符最多为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 程序要求: 给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。 ①输入数据不存在出错的情况,同时也不会超过整数的范围。 ②计算时可允许出现以下情况: A=B (即可理解为运算符的个数为零) A=B?B+B (即全部由B产生)

【精选资料】NOIP提高组复赛试题与简解转载

Day1 铺地毯 【问题描述】 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n 张地毯,编号从1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。【输入】 输入文件名为 carpet.in。 输入共 n+2 行。 第一行,一个整数 n,表示总共有n 张地毯。 接下来的 n 行中,第i+1 行表示编号i 的地毯的信息,包含四个正整数a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y 轴方向的长度。 第 n+2 行包含两个正整数x 和y,表示所求的地面的点的坐标(x,y)。 【输出】 输出文件名为 carpet.out。 输出共 1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1。 【输入输出样例 1】 【输入输出样例说明】 如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点(2,2)的最上面一张地毯是3 号地毯。

【输入输出样例 2】 【输入输出样例说明】 如上图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,点(4,5)没有被地毯覆盖,所以输出-1。 【数据范围】 对于 30%的数据,有n≤2; 对于 50%的数据,0≤a, b, g, k≤100; 对于 100%的数据,有0≤n≤10,000,0≤a, b, g, k≤100,000。 【一句话题意】 给定n个按顺序覆盖的矩形,求某个点最上方的矩形编号。 【考察知识点】 枚举 【思路】 好吧我承认看到图片的一瞬间想到过二维树状数组和二维线段树。

第十六届全国青少年信息学奥林匹克联赛复赛试题

第十六届全国青少年信息学奥林匹克联赛复赛试题 (NOIP2010提高组) NOIP2010提高组复赛第一题机器翻译(Trasnlate) 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。 假设内存中有 M 个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过 M-1,软件会将新单词存入一个未使用的内存单元;若内存中已存入 M 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。 假设一篇英语文章的长度为 N个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。 【输入】输入文件名为 translate.in,输入文件共 2 行。每行中两个数之间用一个空格隔开。第一行为两个正整数 M和 N,代表内存容量和文章的长度。第二行为 N 个非负整数,按照文章的顺序,每个数(大小不超过 1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。 【输出】输出文件 translate.out 共1行,包含一个整数,为软件需要查词典的次数。【数据范围】对于 10%的数据有 M=1,N≤5。00%的数据有 0m then b[a[h-m]]:=false; end;//for writeln(sum); end.//main

noip2015提高组复赛试题答案

noip2015提高组复赛试题答案 一.单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确答案。) 1. 1MB等于()。 A. 1000字节 B. 1024字节 C. 1000?1000字节 D. 1024?1024字节 2. 在PC机中,PENTIUM(奔腾)、酷睿、赛扬等是指()。 A. 生产厂家名称 B. 硬盘型号 C. CPU的型号 D. 显示器的型号 3. 操作系统的作用是()。 A. 把源程序译成目标程序 B. 便于进行数据管理 C. 控制和管理系统资源 D. 实现硬件之间的连接 4. 在计算机内部用于传送、存贮、加工处理的数据或指令都是以()形式进行的。 A. 二进制码 B. 八进制码 C. 十进制码 D. 智能拼音码 5. 下列说法正确的是()。 A. CPU的主要任务是执行数据运算和程序控制 B. 存储器具有记忆能力,其中信息任何时候都不会丢失 C. 两个显示器屏幕尺寸相同,则它们的分辨率必定相同 D. 个人用户只能使用Wifi的方式连接到Internet 6.二进制数00100100和00010100的和是()。 A.00101000 B. 01110011 C.01000100 D. 00111000 7. 与二进制小数0.1相等的十六进制数是()。 A. 0.8 B. 0.4 C. 0.2 D. 0.1 8. 所谓中断是指()。 A. 操作系统随意停止一个程序的运行 B. 当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程 C.因停机而停止一个程序的运行

D.电脑死机 9. 计算机病毒是()。 A. 通过计算机传播的危害人体健康的一种病毒 B. 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C.一种由于计算机元器件老化而产生的对生态环境有害的物质 D.利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒 10. FTP可以用于()。 A. 远程传输文件 B. 发送电子邮件 C. 浏览网页 D. 网上聊天 11.下面哪种软件不属于即时通信软件()。 A.QQ B.MSN C.微信 D.P2P 12. 6个顶点的连通图的最小生成树,其边数为()。 A. 6 B. 5 C. 7 D. 4 13.链表不具备的特点是()。 A.可随机访问任何一个元素 B.插入、删除操作不需要移动元素 C.无需事先估计存储空间大小 D.所需存储空间与存储元素个数成正比 14.线性表若采用链表存储结构,要求内存可用存储单元地址()。 A. 必须连续 B. 部分地址必须连续 C. 一定不连续 D. 连续不连续均可 15. 今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进行进栈,进栈,出栈,进栈,进栈,出栈的操作,则此操作完成后,栈S的栈顶元素为()。 A. f B. c C. a D. b 16. 前序遍历序列与中序遍历序列相同的二叉树为()。 A.根结点无左子树的二叉树 B.根结点无右子树的二叉树 C.只有根结点的二叉树或非叶子结点只有左子树的二叉树 D.只有根结点的二叉树或非叶子结点只有右子树的二叉树 17. 如果根的高度为1,具有61个结点的完全二叉树的高度为()。 A. 5 B. 6 C. 7 D. 8 18. 下列选项中不属于视频文件格式的是()。

NOIP2007提高组复赛试题

全国信息学奥林匹克联赛(NOIP2007)复赛 提高组 题目一览 (2007年11月17日 3小时完成) 说明: 1.文件名(程序名和输入输出文件名)必须使用小写 2.C/C++中函数main()的返回值必须是int,程序正常结束时返回值必须是0。 3.全国统一评测时采用的机器参考配置为:CPU 2.0GHz,内存256M。

1.统计数字 (count.pas/c/cpp) 【问题描述】 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 【输入】 输入文件count.in包含n+1行; 第一行是整数n,表示自然数的个数; 第2~n+1每行一个自然数。 【输出】 输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。 【输入输出样例】 【限制】 40%的数据满足:1<=n<=1000 80%的数据满足:1<=n<=50000 100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)

2.字符串的展开 (expand.pas/c/cpp) 【问题描述】 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母H 或数字串替代其中的减号,即,将上面两个子串分别输出为“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”。 【输入】 输入文件expand.in包括两行: 第1行为用空格隔开的3个正整数,一次表示参数p1,p2,p3。 第2行为一行字符串,仅由数字、小写字母和减号“-”组成。行首和行末均无空格。 【输出】 输出文件expand.out只有一行,为展开后的字符串。 【输入输出样例1】 【输入输出样例2】

第12届全国青少年信息学奥林匹克联赛复赛试题(NOIP2006提高组)

第十二届全国青少年信息学奥林匹克 联赛复赛试题 (NOIP2006提高组) 竞赛时间:2006年11月18日上午8:30—11:30 关于竞赛中不同语言使用限制的说明 一.关于使用Pascal语言与编译结果的说明 1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。2.允许使用数学库(uses math子句),以及ansistring。但不允许使用编译开关(最后测试时pascal 的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。 二.关于C++语言中模板使用的限制说明 1.允许使用的部分: 标准容器中的布尔集合,迭代器,串,流。 相关的头文件: 2.禁止使用的部分: 序列:vector,list,deque 序列适配器:stack, queue, priority_queue 关联容器:map, multimap, set, multiset 拟容器:valarray 散列容器:hash_map, hash_set, hash_multimap, hash_multiset 所有的标准库算法 相关头文件:

2 1.能量项链 (energy.pas/c/cpp) 【问题描述】 在Mars 星球上,每个Mars 人都随身佩带着一串能量项链。在项链上有N 颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars 人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m ,尾标记为r ,后一颗能量珠的头标记为r ,尾标记为n ,则聚合后释放的能量为n r m ⨯⨯(Mars 单位),新产生的珠子的头标记为m ,尾标记为n 。 需要时,Mars 人就用吸盘夹住相邻的两颗珠子,通过聚合得到能量,直到项链上只剩下一颗珠子为止。显然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项链释放出的总能量最大。 例如:设N=4,4颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10) (10,2)。我们用记号⊕表示两颗珠子的聚合操作,(j ⊕k)表示第j ,k 两颗珠子聚合后所释放的能量。则第4、1两颗珠子聚合后释放的能量为: (4⊕1)=10*2*3=60。 这一串项链可以得到最优值的一个聚合顺序所释放的总能量为 ((4⊕1)⊕2)⊕3)=10*2*3+10*3*5+10*5*10=710。 【输入文件】 输入文件energy.in 的第一行是一个正整数N (4≤N ≤100),表示项链上珠子的个数。第二行是N 个用空格隔开的正整数,所有的数均不超过1000。第i 个数为第i 颗珠子的头标记(1≤i ≤N ),当i

NOIP历年复赛提高组试题(2004-2021)

NOIP历年复赛提高组试题(2004-2021)

第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题 (提高组竞赛用时:3小时) 1、津津的储蓄计划(Save.pas/dpr/c/cpp) 【问题描述】 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。 例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。 津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月

初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。 现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。 【输入文件】 输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。 【输出文件】 输出文件save.out包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。 【样例输入1】 290 230

NOIP2021提高组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2021)复赛 提高组 day1 1.生活大爆炸版石头剪子布 (rps.cpp/c/pas) 【问题描述】 石头剪子布是常见的猜拳游戏:石头胜剪子,剪子胜布,布胜石头。若是两个人出拳一样,那么不分输赢。在《生活大爆炸》第二季第8集中显现了一种石头剪子布的升级版游戏。升级版游戏在传统的石头剪子布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。 蜥蜴人:《星际迷航》中的反面角色。 这五种手势的输赢关系如表一所示,表中列出的是甲对乙的游戏结果。 表一石头剪子布升级版输赢关系 此刻,小A和小B尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不必然相等。例如:若是小A以“石头-布-石头-剪子-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列确实是“石头-布-石头-剪子-蜥蜴人-斯波克-石头-布-石头-剪子-蜥蜴人-斯波克-……”,而若是小B以“剪子-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列确实是“剪子-石头-布-斯波克-蜥蜴人-剪子-石头-布-斯波克-蜥蜴人-……” 已知小A和小B一共进行N次猜拳。每一次赢的人得1分,输的得0分;平局两人都得0分。现请你统计N次猜拳终止以后两人的得分。 【输入】 输入文件名为rps.in。 第一行包括三个整数:N,NA,NB,分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。数与数之间以一个空格分隔。 第二行包括NA个整数,表示小A出拳的规律,第三行包括NB个整数,表示小B出拳的规律。其中,0表示“剪子”,1表示“石头”,2表示“布”,3表示“蜥蜴人”, 4表示“斯波克”。数与数之间以一个空格分隔。 【输出】 输出文件名为rps.out。 输出一行,包括两个整数,以一个空格分隔,别离表示小A、小B的得分。

最新noip提高组试题(day1+day2) word版

精品资料 n o i p提高组试题(d a y1+d a y2)w o r d 版 ........................................

CCF 全国信息学奥林匹克联赛(NOIP2017)复赛 提高组 day1 (请选手务必仔细阅读本页内容) 一.题目概况 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。

3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz, 内存 4G,上述时限以此配置为准。 4、只提供 Linux 格式附加样例文件。 5、提交的程序代码文件的放置位置请参照各省的具体要求。 6、特别提醒:评测在当前最新公布的 NOI Linux 下进行,各语言的编译器版本以其为准。

【问题描述】 1.小凯的疑惑(math.cpp/c/pas) 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。 【输入格式】 输入文件名为math.in。 输入数据仅一行,包含两个正整数a 和b,它们之间用一个空格隔开,表示小凯手中金币的面值。 【输出格式】 输出文件名为math.out。 输出文件仅一行,一个正整数N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。 【输入输出样例1】 math/math1.in math/math1.ans 【输入输出样例1 说明】 小凯手中有面值为3 和7 的金币无数个,在不找零的前提下无法准确支付价值为1、2、4、5、8、11 的物品,其中最贵的物品价值为11,比11 贵的物品都能买到,比如: 12 = 3 * 4 + 7 * 0 13 = 3 * 2 + 7 * 1 14 = 3 * 0 + 7 * 2 15 = 3 * 5 + 7 * 0 …… 【输入输出样例2】 见选手目录下的math/math2.in 和math/math2.ans。 【数据规模与约定】 对于30%的数据: 1 ≤ a,b ≤ 50。 对于60%的数据: 1 ≤ a,b ≤ 10,000。 对于100%的数据:1 ≤ a,b ≤ 1,000,000,000。

NOIP2014提高组复赛试题

全国信息学奥林匹克联赛(2014)复赛 提高组 1 1.生活大爆炸版石头剪刀布 () 【问题描述】 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。 蜥蜴人:《星际迷航》中的反面角色。 这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。 表一石头剪刀布升级版胜负关系 乙 剪刀石头布蜥蜴人斯波克甲对乙的 甲结果 剪刀平输赢赢输 石头平输赢输 布平输赢蜥蜴人平赢 斯波克平 现在,小A和小B尝试玩这种升级版的猜拳游戏。已知他们

的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B 以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……” 已知小A和小B一共进行N次猜拳。每一次赢的人得1分,输的得0分;平局两人都得0分。现请你统计N次猜拳结束之后两人的得分。 【输入】 输入文件名为。 第一行包含三个整数:N,,,分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。数与数之间以一个空格分隔。 第二行包含个整数,表示小A出拳的规律,第三行包含个整数,表示小B出拳的规律。其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”, 4表示“斯波克”。数与数之间以一个空格分隔。 【输出】 输出文件名为。

NOIP2016提高组复赛试题(Day1+Day2)

第22 届全国青少年信息学奥林匹克联赛 CCF-NOIP-2016 提高组(复赛)第一试 竞赛时间:2016 年11 月19 日8:30 ∼12:00 提交源程序文件名 编译选项 注意事项: 1. 文件名(程序名和输入输出文件名)必须使用英文小写。 2. 除非特殊说明,结果比较方式均为忽略行末空格及文末回车的全文比较。 3. C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须 是0。 4. 全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor, 2.8GHz,内存4G,上述时限以此配置为准。 5. 只提供Linux 格式附加样例文件。 6. 评测在NOI Linux 下进行。 7. 编译时不打开任何优化选项。

玩具谜题(toy) 【问题描述】 小南有一套可爱的玩具小人,它们各有不同的职业。 有一天,这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图: 这时singer 告诉小南一个谜题:“眼镜藏在我左数第3 个玩具小人的右数第1 个玩具小人的左数第2 个玩具小人那里。” 小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。 小南一边艰难地辨认着玩具小人,一边数着: “singer 朝内,左数第3 个是archer。 “archer 朝外,右数第1 个是thinker。 “thinker 朝外,左数第2 个是writer。 “所以眼镜藏在writer 这里!” 虽然成功找回了眼镜,但小南并没有放心。如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。所以小南希望你写程序帮他解决类似的谜题。这样的谜题具体可以描述为: 有n 个玩具小人围成一圈,己知它们的职业和朝向。现在第1 个玩具小人告诉小南一个包含m 条指令的谜题,其中第i 条指令形如“左数/右数第s i 个玩具小人”。你需要输出依次数完这些指令后,到达的玩具小人的职业。

学科竞赛-NOIP2013提高组复赛试题

NOIP2013提高组复赛试题 CCF 全国信息学奥林匹克联赛(NOIP2013) 复赛 提高组day1 1.转圈游戏 (circle.cpp/c/pas) 【问题描述】 n 个小伙伴(编号从0 到n-1)围坐一圈玩游戏。按照顺时针方向给n 个位置编号,从0 到n-1。最初,第0 号小伙伴在第0 号位置,第 1 号小伙伴在第1 号位置,……,依此类推。 游戏规则如下:每一轮第0 号位置上的小伙伴顺时针走到第m 号位置,第 1 号位置小伙伴走到第m+1 号位置,……,依此类推,第n ?m号位置上的小伙伴走到第0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第n-1 号位置上的小伙伴顺时针走到第m-1 号位置。 现在,一共进行了10^k 轮,请问x 号小伙伴最后走到了第几号位置。 【输入】 输入文件名为circle.in。 输入共1 行,包含4 个整数n、m、k、x,每两个整数之间用一个空格隔开。【输出】 输出文件名为c ircle.out。 输出共1行,包含1个整数,表示10k 轮后x号小伙伴所在的位置编号。 【数据说明】 对于30%的数据,0 对于80%的数据,0 对于100%的数据,1 2.火柴排队(match.cpp/c/pas) 【问题描述】 涵涵有两盒火柴,每盒装有n 根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中ai 表示第一列火柴中第i 个火柴的高度,bi 表示第二列火柴中第i 个火 柴的高度。 每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,

相关文档
最新文档