卷一

1.事件推送

(100分)标题:事件推送 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【事件推送】同一个数轴X上有两个点的集合A={A , A , …, A }和B={B , B , …, B },A 和B 均为正整数,A、B已经按照从小到大排好序,A、B均不为空,给定一个距离R(正整数),列出同时满足如下条件的所有(A , B )数对:

1)A <= B

2)A , B 之间的距离小于等于R

3)在满足1)2)的情况下,每个A 只需输出距离最近的B

4)输出结果按A 从小到大的顺序排序

输入描述:

第一行三个正整数m,n,R

第二行m个正整数,表示集合A

第三行n个正整数,表示集合B

输入限制:

1<=R<=100000,1<=n,m<=100000,1<=Ai,Bj<=1000000000

输出描述:

每组数对输出一行Ai和Bj,以空格隔开

示例1:

输入:

4 5 5

1 5 5 10

1 3 8 8 20

输出:

1 1

5 8

5 8

2.停车场车辆统计

(100分)标题:停车场车辆统计 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限 【停车场车辆统计】特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡 车占三个车位(长度3),统计停车场最少可以停多少辆车,返回具体的数目。

输入描述:

整型字符串数组cars[],其中1表示有车,0表示没车,数组长度小于1000。

输出描述:

整型数字字符串,表示最少停车数目。

示例1:

输入

1,0,1

输出

2

3.任务最优调度

(200分)标题:任务最优调度 | 时间限制:1秒 | 内存限制:65536K | 语言限制: 不限 【任务最优调度】 给定一个正整型数组表示待系统执行的任务列表,数组的每一个元素代表一个任务,元素的值表示该任务的类型。请计算执行完所有任务所需的最短时间。任务执行 规则如下: 1、任务可以按任意顺序执行,且每个任务执行耗时间均为1个时间单位。 2、两个同类型的任务之间必须有长度为N个单位的冷却时间,比如:N为2时,在时间K执行了类型3的任务,那么K+1和K+2两个时间不能执行类型3任务。 3、系统在任何一个单位时间内都可以执行一个任务,或者等待状态。 说明:数组最大长度为1000,数组最大值1000.

输入描述:

第一行记录一个用半角逗号分隔的数组,数组长度不超过1000,数组元素的值不超过1000 第二行记录任务冷却时间,N为正整数,N<=100。

输出描述:

输出为执行完所有任务所需的最短时间。

示例1:

输入:

2,2,2,3

2

输出:

7

卷二

1.按身高和体重排队

(100分)标题:按身高和体重排队 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限 【按身高和体重排队】 某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持 原有的编号顺序关系。请输出排列后的学生编号。

输入描述:

两个序列,每个序列由n个正整数组成(0 < n <= 100)。第一个序列中的数值代表身高,第二个序列中的数值代表体重。

输出描述:

排列结果,每个数值都是原始序列中的学生编号,编号从1开始

示例1:

输入

4

100 100 120 130

40 30 60 50

输出

2 1 3 4

2.判断一组不等式是否满足约束并输出最大差

(100分)标题:判断一组不等式是否满足约束并输出最大差 | 时间限制:1秒 | 内存限制:65536K | 语言限制: 不限 【判断一组不等式是否满足约束并输出最大差】给定一组不等式,判断是否成立并输出不等式的最大差(输出浮点数的整数部分),要求:1)不等式系数为double类 型,是一个二维数组;2)不等式的变量为int类型,是一维数组;3)不等式的目标值为double类型,是一维数组;4)不等式约束为字符串数组,只能 是:">",">=","<","<=","=",例如,不等式组:

a11*x1+a12*x2+a13*x3+a14*x4+a15*x5<=b1;

a21*x1+a22*x2+a23*x3+a24*x4+a25*x5<=b2;

a31*x1+a32*x2+a33*x3+a34*x4+a35*x5<=b3;

最大差=

max{ (a11*x1+a12*x2+a13*x3+a14*x4+a15*x5-b1),

(a21*x1+a22*x2+a23*x3+a24*x4+a25*x5-b2),

(a31*x1+a32*x2+a33*x3+a34*x4+a35*x5-b3) },类型为整数(输出浮点数的整数部分)

输入描述:

1)不等式组系数(double类型):

a11,a12,a13,a14,a15

a21,a22,a23,a24,a25

a31,a32,a33,a34,a35

2)不等式变量(int类型):

x1,x2,x3,x4,x5

3)不等式目标值(double类型):b1,b2,b3

4)不等式约束(字符串类型):<=,<=,<=

输入:a11,a12,a13,a14,a15;a21,a22,a23,a24,a25;a31,a32,a33,a34,a35;x1,x2,x3,x4,x5;b1,b2,b3;<=,<=,<=

输出描述:

true 或者 false, 最大差

示例1:

输入

2.3,3,5.6,7,6;11,3,8.6,25,1;0.3,9,5.3,66,7.8;1,3,2,7,5;340,670,80.6;<=,<=,<=

输出

false 458

3.分月饼

标题:分月饼 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【分月饼】

题目描述:

中秋节,公司分月饼,m个员工,买了n个月饼,m<=n,每个员工至少分1个月饼,但可以分多个,单人分到最多月饼的个数是Max1,单人分到第二多月饼个数

是Max2,Max1-Max2 <= 3,单人分到第n-1多月饼个数是Max(n-1),单人分到第n多月饼个数是Max(n),Max(n-1) – Max(n) <= 3, 问有多少种分月饼的方法?

输入描述:

每一行输入m n,表示m个员工,n个月饼,m<=n

输出描述:

输出有多少种月饼分法

示例1:

输入

2 4

输出

2

卷三

1.寻找相同子串

标题:寻找相同子串 | 时间限制:1秒 | 内存限制:65536K | 语言限制: 不限

【寻找相同子串】给你两个字符串 t 和 p ,要求从 t 中找到一个和 p 相同的连续子串,并输出该字串第一个字符的下标。

输入描述:

输入文件包括两行,分别表示字符串 t 和 p ,保证 t 的长度不小于 p ,且 t 的长度不超过1000000,p 的长度不超过10000。

输出描述:

如果能从 t 中找到一个和 p 相等的连续子串,则输出该子串第一个字符在t中的下标(下标从左到右依次为1,2,3,…);如果不能则输出”No”;如果含有多个这样 的子串,则输出第一个字符下标最小的。

示例1:

输入

AVERDXIVYERDIAN

RDXI

输出

4

2.最长子字符串的长度(一)

标题:最长子字符串的长度(一) | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【最长子字符串的长度(一)】给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 'o' 字符出现了偶数次最长子字符串的长度。

输入描述:

输入是一串小写字母组成的字符串

输出描述:

输出是一个整数

备注:

1 <= s.length <= 5 x 10^5

s 只包含小写英文字母

示例1:

输入

alolobo

输出

6

3.服务器广播

标题:服务器广播 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【服务器广播】服务器连接方式包括直接相连,间接连接。A和B直接连接,B和C直接连接,则A和C间接连接。直接连接和间接连接都可以发送广播。

给出一个N*N数组,代表N个服务器,matrix[i][j] == 1,则代表i和j直接连接;不等于1时,代表i和j不直接连接。matrix[i][i] == 1,即自己和自己直接连接。

matrix[i][j] == matrix[j][i]。

计算初始需要给几台服务器广播,才可以使每个服务器都收到广播。

输入描述:

输入为N行,每行有N个数字,为0或1,由空格分隔,构成N*N的数组,N的范围为 1<=N<=40

输出描述:

输出一个数字,为需要广播的服务器的数量

示例1:

输入:

1 0 0

0 1 0

0 0 1

输出:

3

卷四

1.字符串序列判定

标题:字符串序列判定 | 时间限制:3秒 | 内存限制:262144K | 语言限制: [C, C++, Pascal, Java, Python, Php, C#, Object C, Python 3, Javascript,

Javascript_V8, Sqlite, R, Go, Ruby, Swift, Matlab, C++14, Bash, Pypy2, Pypy3, Rust]

【字符串序列判定】

输入两个字符串S和L,都只包含英文小写字母。S长度<=100,L长度<=500,000。判定S是否是L的有效字串。

判定规则:S中的每个字符在L中都能找到(可以不连续),且S在L中字符的前后顺序与S中顺序要保持一致。(例如,S="ace"是L="abcde"的一个子序列且有效字

符是a、c、e,而"aec"不是有效子序列,且有效字符只有a、e)

输入描述:

输入两个字符串S和L,都只包含英文小写字母。S长度<=100,L长度<=500,000。

先输入S,再输入L,每个字符串占一行。

输出描述:

S串最后一个有效字符在L中的位置。(首位从0开始计算,无有效字符返回-1)

示例1:

输入:

ace

abcde

输出:

4

2.统计射击比赛成绩

标题:统计射击比赛成绩 | 时间限制:1秒 | 内存限制:65536K | 语言限制: 不限

【统计射击比赛成绩】给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手

ID序列。条件如下:

1、一个选手可以有多个射击成绩的分数,且次序不固定。

2、如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手。

3、如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列。

输入描述:

输入第一行,一个整数N,表示该场比赛总共进行了N次射击,产生N个成绩分数(2<=N<=100)。

输入第二行,一个长度为N整数序列,表示参与每次射击的选手ID(0<=ID<=99)。

输入第三行,一个长度为N整数序列,表示参与每次射击的选手对应的成绩(0<=成绩<=100)。

输出描述:

符合题设条件的降序排名后的选手ID序列。

示例1:

输入:

13

3,3,7,4,4,4,4,7,7,3,5,5,5

53,80,68,24,39,76,66,16,100,55,53,80,55

输出:

5,3,7,4

3.考古学家

标题:考古学家 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【考古学家】有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。为了破解石碑内容,考古学家希望有程序能

帮忙计算复原后的石碑文字组合数,你能帮忙吗?

输入描述:

第一行输入n,n表示石碑碎片的个数。

第二行依次输入石碑碎片上的文字内容s,共有n组

输出描述:

输出石碑文字的组合(按照升序排列),行末无多余空格。

备注:

如果存在石碑碎片内容完全相同,则由于碎片间的顺序变换不影响复原后的碑文内容,即相同碎片间的位置变换不影响组合。

示例1:

输入:

3

a b c

输出:

abc

acb

bac

bca

cab

cba

卷五

1.按索引范围翻转文章片段

标题:按索引范围翻转文章片段 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【按索引范围翻转文章片段】输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。例如输入字符串"I am a developer. ",区间

[0,3],则输出"developer. a am I"。

String reverseWords(String s, int start, int end)

输入描述:

使用换行隔开三个参数,第一个参数为英文文章内容即英文字符串,第二个参数为翻转起始单词下标(下标从0开始),第三个参数为结束单词下标。

输出描述:

翻转后的英文文章片段所有单词之间以一个半角空格分隔进行输出

示例1:

输入:

I am a developer.

1

2

输出:

I a am developer.

2.一种字符串压缩表示的解压

标题:一种字符串压缩表示的解压 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限 【一种字符串压缩表示的解压】有一种简易压缩算法:针对全部由小写英文字母组成的字符串,将其中连续超过两个相同字母的部分压缩为连续个数加该字母,其他 部分保持原样不变。例如:字符串“aaabbccccd”经过压缩成为字符串“3abb4cd”。 请您编写解压函数,根据输入的字符串,判断其是否为合法压缩过的字符 串,若输入合法则输出解压缩后的字符串,否则输出字符串“!error”来报告错误。

输入描述:

输入一行,为一个ASCII字符串,长度不会超过100字符,用例保证输出的字符串长度也不会超过100字符

输出描述:

若判断输入为合法的经过压缩后的字符串,则输出压缩前的字符串;若输入不合法,则输出字符串“!error”。

示例1:

输入:

4dff

输出:

Ddddff

3.服务失效判断

标题:服务失效判断 | 时间限制:1秒 | 内存限制:32768K | 语言限制: 不限

【服务失效判断】

某系统中有众多服务,每个服务用字符串(只包含字母和数字,长度<=10)唯一标识,服务间可能有依赖关系,如A依赖B,则当B故障时导致A也故障。

依赖具有传递性,如A依赖B,B依赖C,当C故障时导致B故障,也导致A故障。

给出所有依赖关系,以及当前已知故障服务,要求输出所有正常服务。

依赖关系:服务1-服务2 表示“服务1”依赖“服务2”

不必考虑输入异常,用例保证:依赖关系列表、故障列表非空,且依赖关系数,故障服务数都不会超过3000,服务标识格式正常。

输入描述:

半角逗号分隔的依赖关系列表(换行)

半角逗号分隔的故障服务列表

输出描述:

赖关系列表中提及的所有服务中可以正常工作的服务列表,用半角逗号分隔,按依赖关系列表中出现的次序排序。

特别的,没有正常节点输出单独一个半角逗号。

示例1:

输入:

a1-a2,a5-a6,a2-a3

a5,a2

输出:

a6,a3

卷六

1.玩牌高手

标题:玩牌高手 | 时间限制:1秒 | 内存限制:32768K | 语言限制: 不限

【玩牌高手】

给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。选择规则如下:

1、在每轮里选手可以选择获取该轮牌面,则其总分数加上该轮牌面分数,为其新的总分数。

2、选手也可不选择本轮牌面直接跳到下一轮,此时将当前总分数还原为3轮前的总分数,若当前轮次小于等于3(即在第1、2、3轮选择跳过轮次),则总分数置为

0。

3、选手的初始总分数为0,且必须依次参加每一轮。

输入描述:

第一行为一个小写逗号分割的字符串,表示n轮的牌面分数,1<= n <=20。

分数值为整数,-100 <= 分数值 <= 100。

不考虑格式问题。

输出描述:

所有轮结束后选手获得的最高总分数。

示例1:

输入:

1,-5,-6,4,3,6,-2

输出:

11

2.VLAN资源池

标题:VLAN资源池 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【VLAN资源池】VLAN是一种对局域网设备进行逻辑划分的技术,为了标识不同的VLAN,引入VLAN ID(1-4094之间的整数)的概念。定义一个VLAN ID的资源池

(下称VLAN资源池),资源池中连续的VLAN用开始VLAN-结束VLAN表示,不连续的用单个整数表示,所有的VLAN用英文逗号连接起来。现在有一个VLAN资源

池,业务需要从资源池中申请一个VLAN,需要你输出从VLAN资源池中移除申请的VLAN后的资源池。

输入描述:

第一行为字符串格式的VLAN资源池,第二行为业务要申请的VLAN,VLAN的取值范围为[1,4094]之间的整数。

输出描述:

从输入VLAN资源池中移除申请的VLAN后字符串格式的VLAN资源池,输出要求满足题目描述中的格式,并且按照VLAN从小到大升序输出。

如果申请的VLAN不在原VLAN资源池内,输出原VLAN资源池升序排序后的字符串即可。

备注:

输入VLAN资源池中VLAN的数量取值范围为[2-4094]间的整数,资源池中VLAN不重复且合法([1,4094]之间的整数),输入是乱序的。

示例1:

输入:

1-5

2

输出:

1,3-5

3.区间交集

标题:区间交集 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【区间交集】给定一组闭区间,其中部分区间存在交集。任意两个给定区间的交集,称为公共区间(如:[1,2],[2,3]的公共区间为[2,2],[3,5],[3,6]的公共区间为

[3,5])。公共区间之间若存在交集,则需要合并(如:[1,3],[3,5]区间存在交集[3,3],须合并为[1,5])。按升序排列输出合并后的区间列表。

输入描述:

一组区间列表,

区间数为N:

0 <= N <= 1000;

区间元素为X:

-10000 <= X <= 10000

输出描述:

升序排列的合并后区间列表

备注:

1、区间元素均为数字,不考虑字母、符号等异常输入。

2、单个区间认定为无公共区间。

示例1:

输入:

0 3

1 3

3 5

3 6

输出:

1 5

卷七

1.字符串加密

标题:字符串加密 | 时间限制:2秒 | 内存限制:65536K | 语言限制: 不限

【字符串加密】

给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量,数组a前三位已经赋值:

a[0]=1,a[1]=2,a[2]=4。当i>=3时,数组元素a[i]=a[i-1]+a[i-2]+a[i-3],

例如:原文 abcde 加密后 bdgkr,其中偏移量分别是1,2,4,7,13。

输入描述:

第一行为一个整数n(1<=n<=1000),表示有n组测试数据,每组数据包含一行,原文str(只含有小写字母,0<长度<=50)。

输出描述:

每组测试数据输出一行,表示字符串的密文

备注:

解答要求

时间限制:2000ms,内存限制:64MB

示例1:

输入:

1

xy

输出:

ya

2.数组组成的最小数字

标题:数组组成的最小数字 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限 【数组组成的最小数字】 给定一个整型数组,请从该数组中选择3个元素组成最小数字并输出(如果数组长度小于3,则选择数组中所有元素来组成最小数字)。

输入描述:

一行用半角逗号分割的字符串记录的整型数组,0 < 数组长度 <= 100,0 < 整数的取值范围 <= 10000。

输出描述:

由3个元素组成的最小数字,如果数组长度小于3,则选择数组中所有元素来组成最小数字。

示例1:

输入:

21,30,62,5,31

输出:

21305

3.N进制减法

标题:N进制减法 | 时间限制:1秒 | 内存限制:262144K | 语言限制: 不限

【N进制减法】实现一个基于字符串的N机制的减法。

需要对输入的两个字符串按照给定的N进制进行减法操作,输出正负符号和表示结果的字符串。

输入描述:

输入:三个参数。

第一个参数是整数形式的进制N值,N值范围为大于等于2、小于等于35。

第二个参数为被减数字符串;

第三个参数为减数字符串。有效的字符包括0~9以及小写字母a~z,字符串有效字符个数最大为100个字符,另外还有结尾的\0。

限制:

输入的被减数和减数,除了单独的0以外,不能是以0开头的字符串。

如果输入有异常或计算过程中有异常,此时应当输出-1表示错误。

输出描述:

输出:2个。

其一为减法计算的结果,-1表示出错,0表示结果为整数,1表示结果为负数。

其二为表示结果的字符

示例1:

输入:

2 11 1

输出:

0 10