科大讯飞 0830笔试 研发第五批

笔试内容为:通用卷(12选择题+3编程)+选考(C++/JAVA/前端/Go/Python,8选择题+数据库 3选择题+linux 3选择题)

编程题如下,仅供参考,祝大家顺利!

1.可访问的资源数

已知牛牛有n份资源,编号为1,2,...,n,初始均处于未上锁状态。

m次操作,每一次操作给出一个编号p,如果p所对应的资源未上锁,则为其上锁;否则,解除锁,使其回到未上锁状态。每一次操作后,牛牛都希望分别统计闭区间[1, x], [y, n]中可访问的资源数量。

这里规定,一个资源可访问,当且仅当其处于未上锁状态。

输入描述:

第一行输入T (1<=T<=1000),代表测试数据的组数。对于每组测试数据,第一行输入四个正整数n, m, x, y (1<=n<=2*10^5; 1<=m<=4*10^5; 1<=x, y<=n),依次代表资源数量,操作次数,以及两个闭区间范围的边界。

接下去m行,每行输入一个正整数p (1<=p<=n),代表对编号为p的资源进行操作。

题目保证,所有测试数据的n之和不会操作2*10^5,m之和不会超过4*10^5。

输出描述:

对于每个操作,一行输出两个整数,分别代表区间[1, x]和[y, n]中可访问资源数。

示例输入:

2

4 3 2 3

2

3

3

6 6 4 2

1

3

6

4

4

2

示例输出:

1 2

1 1

1 2

3 5

2 4

2 3

1 2

2 3

1 2

2.数字的出现次数

一个长度为n的数组A1, A2, ..., An,其中Ai = i。q次操作,每次选择区间[l, r]将下标从l~r的数全部取出,按原顺序放置到数列末尾,数组变成A1, A2, ..., A{l-1}, A{r+1}, A{r+2}, ..., An, A{l}, A{l+1}, ..., A{r}。例如,[1,2,3,4,5,6],第1次选择操作[2,4],变化后数列变为[1,5,6,2,3,4],第2 次选择操作[3,5],数列变为[1,5,4,6,2,3]。请输出q次操作过程中,数字之出现过的下标位置的个数。

输入描述:

第一行包含两个整数n, q (1≤n,q≤3*10^3),表示数列的长度和操作次数。接下来q行,每行包含两个整数l, r (1 ≤l≤r≤n),表示 次操作。

输出描述:

输出一行包含n个整数,第i个数表示数字i出现过的下标位置的个数。

示例输入:

6 2

1 3

2 4

示例输出:

3 2 2 2 3 3

说明:

[1,2,3,4,5,6],第1次选择操作[1,3],变化后数列变为[4,5,6,1,2,3],第 2次选择操作[2,4],数列变为[4,2,3,5,6,1]。

数字1操作过程中出现的下标分别为[1,4,6],共3个。

数字2操作过程中出现的下标分别为[2,5,2],共2个。

数字3操作过程中出现的下标分别为[3,6,3],共2个。

数字4操作过程中出现的下标分别为[4,1,1],共2个。

数字5操作过程中出现的下标分别为[5,2,4],共3个。

数字6操作过程中出现的下标分别为[6,3,5],共3个。

示例输入:

20 6

1 5

8 12

6 18

3 9

5 5

13 20

示例输出:

6 6 6 6 6 2 2 4 4 4 5 5 6 6 6 5 5 5 5 5

3.数字串的最大得分

对于某个由0和1组成的串,他的得分是每段连续的1的长度的平方的总和。给定一个01串,你可以进行最多k次操作,每次操作可以选择一个0将其变成1。请问操作过后,该串的最大得分是多少。

输入描述:

第一行两个数字n, k (1≤n≤500, 0≤k<500)分别代表字符串的长度、可以操作的次数。

第二行为仅由 0,1 组成的长度为n 的字符串s

输出描述:

一个数字,代表最大得分

示例输入:

6 1

100101

示例输出:

10

说明:

最优的方案是将第5位的0改为1,变为100111。此时一共有两段连续的1,分别为"1"和"111",得分分别为1和 9,总和为10。

#科大讯飞求职进展汇总##秋招##笔试#
全部评论
这个后面的选考是什么意思?
点赞 回复 分享
发布于 09-02 20:35 湖北

相关推荐

点赞 评论 收藏
分享
点赞 12 评论
分享
牛客网
牛客企业服务