C++上机题目(第五届上海市青少年算法竞赛题)

本文介绍了五个与IT技术相关的比赛题目,涉及符号编码、数对排序、数字操作(如删除数字求最大值和寻找最大余数)、查找特定结构(夹心饼干数量)以及路径规划(迷宫游戏中的最少移动轮数)。这些题目考察了参赛者的逻辑思维、编程技巧和算法应用能力。
摘要由CSDN通过智能技术生成

网络同步赛

T1:符号译码

题目描述

小爱为标点符号设计了一套编码系统,编码规则如下:

[  的编码为 010

]  的编码为101

< 的编码为00

> 编码为11

+ 的编码为011

- 的编码为100

根据这套编码规则,任意长的标点符号序列可以编码成01序列,例如++>[-<]编码后变成了0110111101010000101。

可以确定的是,符合编码规则的01序列只能对应一种唯一的符号序列。给定一串符合编码规则01序列,请还原它对应的符号序列。输入格式。若干01表示输入。输出格式。若干个符号表示输出。

输入格式

若干01表示输入

输出格式

若干个符号表示输出

数据范围

设b表示输入数据的长度,则

30%的数据,2≤b≤10

60%的数据,2≤b≤2000

100%的数据,2≤b≤300000

样例数据

输入:0110111101010000101

输出:++>[-<]

T2:数对排序

题目描述

由两个自然数组成的一对数称之为有序数对。有序是指数对的第一项与第二项是区别的,例如(0,1),(1,0)是不一样的数对。

我们对所有的有序数对进行排序,排序规则如下:

  • 首先,计算每个数对的两数之和,和较小的数对靠前排列;
  • 其次,如果两数之和一样大,则数对中第一项较小的数对靠前排列。

按照这个规则排序,前6项数对为

                                                        (0,0), (0,1), (1,0), (0,2), (1,1), (2,0)

给定一个整数k,请求出第k个数对。

输入格式

单个整数k

输出格式

单独一行:两个整数表示第k个有序数对

数据范围

30%的数据,1≤k≤1,000

60%的数据,1≤k≤1,000,000

100%的数据,1≤k≤1,000,000,000

样例数据

输入:6

输出:2 0

T3:最大的数字

题目描述
给定一个十进制整数n,保证n的首位不为0,你必须删除其中d个数字,使得留下的数字最大。请输出留下的最大数。
 

输入格式

第一行:单个整数表示d
第二行:单个正整数n


输出格式

单个整数:表示n被删除d个数字之后留下的最大数

数据范围

30%的数据,1≤n< 10000, 1≤d≤2
60%的数据,1≤n< 10500, 1≤d≤200
100%的数据,1≤n< 0000000 1 < d < 200000

样例数据

输入1:2 98989

输出1:999

输入2:3 10000

输出2:10

 

T4:夹心饼干

题目描述
给定一个数列a1, a.,...n.,请求出在这个序列中,存在多少个夹心饼干。所谓夹心饼干,就是从数列中挑出三个数ai,aj,ak,满足i<j<k且ai=ak且ai≠aj。
 

输入格式

第一行:单个整数n
第二行:n个整数表示a1, a2,....an

输出格式

单个整数:表示夹心饼干的数量

数据范围

30%的数据,n≤100
60%的数据,n≤20000
100%的数据,1≤n≤300,000
0≤ ai< n

样例数据

输入:

5

1 2 1 2 1

输出:5

 

T5:最大的余数

题目描述

给定n个数字a1,a.....n,在给定一-个整数 m,请从给定的数字中挑选任意多个数字,
使得它们的和模m的余数尽量大,输出这个最大的余数。

输入格式

第一行:两个整数n与m
第二行: n个整数a1,a2,....an

输出格式

单个整数表示答案

数据范围

对于30%的数据,1≤n≤10;
对于60%的数据,1≤n≤20;
对于100%的数据,1<n≤40
1≤ai≤10^9;
1≤m≤10^9;

样例数据

输入:

5 233

1 10 100 1000 10000

输出:

225

 说明:10011 mod 233 = 225

T6:位置互换

题目描述
迷宫游戏是在- -张 n x m的网格图中进行的,其中a(ij) 表示第i行、第j列网格的状态,
每个网格有以下4种情况:
。若a(i,j)为 . ,  则表示该位置为可以走的空地
。若a(i,j)为 # , 则表示该位置为不可走的墙壁
。若a(i,j)为 1 ,  则表示该位置为小爱初始的位置
。若a(i,j)为 2 ,  则表示该位置为小艾初始的位置

每一轮游戏开始时,可以自由决定是小爱先移动还是小艾先移动,他们可以移动至相邻的上下左
右四个空格或原地不动,但又不可以移动至对方所在的网格中。

请问,游戏最少进行多少轮,才能使小爱和小艾互换位置?

输入格式

输入第一行,两个正整数分别表示n, m
接下来的第2行至第n+1行,每行m个字符,其中第i+1行、第j列的字符表示初
始时网格a(i,j)的状态。

输出格式

输出共一行, 一个整数表示两人互换位置最少需要的轮数,若无法完成,则输出No Solution

数据范围

对于50%的数据,1<n,m≤5
对于100%的数据,1<n,m≤30

样例数据

输入:

3 3

1..

...

..2

输出:

4

输入

3 3

1..

###

..2

输出:

No Solution

 

说明:被第二行的墙挡住了

 

输入

2 3

1.2

#.#

输出:

4

 

输入

3 3

1.#

#.#

#.2

输出:

No Solution

题目详解请查看链接:

第五届上海市青少年算法竞赛题解 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值