视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
2014年衢州市第二十七届青少年信息学竞赛复赛试卷_普及组
2025-09-29 17:09:23 责编:小OO
文档
衢州市第二十七届青少年信息学竞赛复赛试卷

普及组

(请选手务必仔细阅读本页内容)

一.题目概况

中文题目名称字符串解压缩弹性小球折型最大数字串
英文题目与子目录名stringballfoldingnumber
可执行文件名stringballfoldingnumber
输入文件名string.in

ball.in

folding.in

number.in

输出文件名string.out

ball.out

folding.out

number.out

每个测试点时限1 秒

1 秒

1 秒

1 秒

测试点数目10101010
每个测试点分值10101010
附加样例文件
结果比较方式全文比较(过滤行末空格及文末回车)
题目类型传统传统传统传统
二.提交源程序文件名

对于pascal 语言

string.pas

ball.pas

folding.pas

number.pas

对于c 语言

string.c

ball.c

folding.c

number.c

对于c++ 语言

string.cpp

ball.cpp

folding.cpp

number.cpp

三.编译命令(不包含任何优化开关)

对于pascal 语言

fpc string.pas

fpc ball.pas

fpc folding.pas

fpc number.pas

对于c 语言

gcc -o string

string.c -lm

gcc -o ball

ball.c -lm

gcc -o folding

folding.c -lm

gcc -o number

number.c -lm

对于c++ 语言

g++ -o string

string.cpp -lm

g++ -o ball

ball.cpp -lm

g++ -o folding

folding.cpp -lm

g++ -o number

number.cpp -lm

四.运行内存

内存上限128M128M128M128M
注意事项:

1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。

3、统一评测时采用的机器配置为:CPU P4 3.0GHz,内存 2G,上述时限以此配置为准。

4、特别提醒:评测在Windows下进行,评测软件为cena8.0。

字符串解压缩

(string.pas/c/cpp)

【题目描述】

观察这个字符串‘AAAABCCCCCDDDD’,它均由大写英文字母组成,其长度为14,我们可以把这个字符串压缩成‘4AB5C4D’,压缩后长度为7,压缩规则是:假设某连续出现的同一字母的数量为n,则其在压缩字符串中为‘n字母’,若n=1则n必须省略。因为倘若‘1’不省略,则字符串‘AABCDE’会被压缩成‘2A1B1C1D1E’,长度反而变大了。

任务:编一程序,根据被压缩的字符串求出原来的字符串。

【输入格式】

输入文件仅有一行为一个长度为L的压缩过的字符串。(并且字母都是大写英文字母),保证字符串中间的数字在[2,100],即(2≤数字≤100);

【输出格式】

输出原字符串(字符串可能会很长,每40个字符换行)。

【样例输入】

3A4B7D

【样例输出】

AAABBBBDDDDDDD

【数据规模】

对于30%的数据:2≤L≤20;

对于60%的数据:2≤L≤250;

对于100%的数据:2≤L≤1,000;

弹性小球

(ball.pas/c/cpp)

【题目描述】

笨笨有一个弹性小球,小球有一个能量值E。

笨笨走进一个M*N房间,房间有M行N列。一开始在左上角,以向右下角45°的方向弹射小球。小球有两个性质:

1.    小球在运动过程中不会损失能量,只有在碰壁或碰角的时候才会损失能量,当能量<=0了小球就停止运动了;

2.    小球弹射遵循反射定律,小球碰角会原路返回(请参照右边图画)。

请聪明的你告诉笨笨弹性小球在这个房间中的运动轨迹。

【输入格式】

第一行三个整数M、N、E,表示房间的行数和列数、小球的初始能量。

第二行八个整数,分别是小球撞到上(北)、右(东)、下(南)、左(西)、左上(西北)、右上(东北)、右下(东南)、左下(西南)损失的能量。

【输出格式】

输出一张小球运动的轨迹图(详见样例)。轨迹图要求如下:

1.整个(M+2)*(N+2)的图,外面要有边框,上下各N个'-',左右各M个'|';

其中map[1,1]=map[1,N+2]=map[M+2,1]=map[M+2,N+2]为1个空格;

2.    小球运动轨迹用'/'和'\\'表示,其他部分用' '(空格)表示。

【样例输入1】

2 2 5

2 3 4 6 1 1 3 9

【样例输出1】

 -- 

|\\ |

| \\|

 -- 

【样例输入2】

3 5 6

1 1 1 1 1 1 1 1

【样例输出2】

 ----- 

|\/ /\\|

|/\/ /|

|\/\/ |

 ----- 

【数据规模】

对于30%的数据:1≤M,N≤10; 0对于60%的数据:1≤M,N≤60; 0对于100%的数据:1≤M,N≤100; 0折型最大

(folding.pas/c/cpp)

【题目描述】

折型在日常生活中随处可见,比如闪电符号“ ”,显示器的四个角等等;折型大致可以分为四种类型(“┌”,“┐”,“└”,“┘”)。笨笨只对“┘”这种折型特别感兴趣(萝卜青菜,各有所爱),笨笨想在一个二维矩阵中求“┘”这种数字加和最大的折型,具体规定如下描述:

对于一个N行*M列的矩阵,一个折型区域必须满足:

1、它的形状为“┘”(不能是“└”,“┌”,或“┐”);

2、它的宽度为1;

3、它的横向长度和纵向长度都必须大于1且连续,不能等于1(即不能退化为一条线或一个点);

现给出这个二维矩阵,求其中数字和最大的这种折型区域。

【输入格式】

第一行为N,M,中间用一个空格隔开,N表示矩阵的行数,M表示矩阵的列数;

接下来是N行,每行M个整数,每2个整数之间用1个空格隔开,每个整数A[i,j]在[-100,100];

【输出格式】

一行一个整数,即满足题目要求的折型区域的最大数字和。

【样例输入】

4 4

-2 5 0 3

-1 1 0 -3

3 -2 -4 -6

-3 5 -5 5

【样例输出】

7

【样例解释】如右图所示,符合要求的折型区域数字和最大

【数据规模】

对于30%的数据:2≤M,N≤100;

对于60%的数据:2≤M,N≤500;

对于100%的数据:2≤M,N≤1,000; -100≤A[i,j]≤100;

数字串

(number.pas/c/cpp)

【题目描述】

给你一个长度为n的数字串,数字串里会包含1~m这些数字。如果连续的一段数字子串包含了1~m这些数字,则称这个数字子串为NUM串。你的任务是求出长度最短的NUM串,为了降低难度,你只需要输出这个长度即可。

【输入格式】

第一行给定n和m,中间用1个空格隔开;

第二行n个整数,表示数字串,每2个数字之间用1个空格隔开;第i个整数为A[i];

【输出格式】

如果存在NUM串则输出最短NUM串长度,

否则第一行输出“NO”(不包含引号),第二行按照由小到大输出构成NUM串还至少需要哪些数字,每2个整数之间用1个空格隔开。

【样例输入1】

7 3

2 1 1 3 3 3 2

【样例输出1】

4

【样例输入2】

10 6

1 2 3 3 2 1 1 1 1 1

【样例输出2】

NO

4 5 6

【数据规模】

对于30%的数据:1≤M,N≤1,000;

对于60%的数据:1≤M,N≤100,000;

对于100%的数据:1≤M,N≤200,000; 1≤A[i]≤m;下载本文

显示全文
专题