科大讯飞 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 湖北

相关推荐

难度挺大的,做完不能回头看一、单选:1、float==double:float会被转成double,即便如此,仍有可能返回false2、AdaBoost算法确实会加大此前决策树(或其他弱分类器)分类错误的权重,使下一个模型尽可能正确,所以依赖之前的模型;3、GBDT(Gradient&nbsp;Boosting&nbsp;Decision&nbsp;Tree,梯度提升决策树)是一种集成学习方法,它通过迭代地构建决策树来优化损失函数,从而组合成一个强学习器。其核心思想是通过计算损失函数在当前模型上的梯度(或近似梯度),来定位模型的不足之处,并基于这些梯度信息来构建新的决策树模型,以逐步减少损失函数的值。4、AdaBoost和GBDT都属于决策树模型boosting方法5、生成式预训练(Generative&nbsp;Pre-Training)是一种在自然语言处理(NLP)和计算机视觉等领域广泛使用的技术,其核心思想是通过在大规模无标签数据上进行预训练,使模型学习到数据的内在规律和表示,从而能够更好地适应下游任务,生成式预训练本身并不直接与目标函数绑定,有助于缓解过拟合问题,不一定直接保证有助于鉴别的精细化;6、鉴别性预训练通常指的是那些直接针对特定任务(如分类或回归)进行优化的预训练方法,分类准则可以用交叉熵,回归准则可以用最小均方误差7、鉴别性训练通常应用在机器学习,特别是语音识别和自然语言处理等领域中,是一种通过最小化目标函数来优化模型性能的训练方法。在最小化目标函数的过程中,可能会导致底层权重向最终目标过多调整,从而忽略了隐藏层的重要性;8、DNN(深度神经网络)参数确实可以使用鉴别性预训练(Discriminative&nbsp;Pre-Training,简称DPT)来进行鉴别初始化。9、状态模式实际上很好地体现了封装性;10、状态模式通过将状态逻辑分散到多个状态类中来解决复杂的逻辑问题,但这确实可能导致类的数量增加;11、状态模式非常适合处理包含大量分支判断语句的代码12、在状态模式中,通常会有一个抽象状态角色(State&nbsp;interface或抽象类),它定义了所有状态类共有的接口。这个接口包括了一些方法,这些方法对应于环境类在不同状态下可能需要执行的行为13、Adam结合了动量法和RMSProp算法的思想,使得Adam能够适应不同参数的更新需求,加快收敛速度;14、SGD容易受到数据噪声的影响,导致训练过程不稳定,可能更容易达到全局最优解;15、处理大规模数据集和复杂模型时,Adam通常是一个不错的选择;而在处理小规模数据集或需要精细调整模型时,SGD或RMSProp可能更加合适16、稀疏数据是指数据集中包含大量零值或缺失值的数据。对于这类数据,使用学习率自适应的优化算法确实是一种有效的策略。学习率自适应算法能够根据数据的特性和训练过程中的梯度变化动态调整学习率,从而在稀疏数据上获得更好的训练效果17、2个长度为N的vector进行swap操作时间复杂度是O(1)18、5g的磁盘,2kb一个的簇,共有2621440个簇,使用位图法,2kb有2048字节,也就是16384位,一位标识一个簇,那么需要2621440&nbsp;/&nbsp;16384=&nbsp;160个簇19、贝叶斯是先验推后验二、编程题:1道栈,2道图论,对应难度:简单、中等、困难,各15分
查看5道真题和解析 投递科大讯飞等公司10个岗位
点赞 评论 收藏
分享
点赞 11 评论
分享
牛客网
牛客企业服务