秋招日寄|中兴通讯C++笔试20240909编程题
共六组题
编程题一共两道,但是体验极差:
不同人不同卷,实验室同学抽中了两个字符串的题,巨简单;
这个编程平台,海纳在线平台,不能查看通过率,禁止一切复制粘贴操作,跟在txt上写代码没啥区别;
题干超长,第一题直接报错exceed memory limit,也不知道该咋改,索性放弃了;
编程题1:
在一个云计算平台中,有多个服务器实例并行处理任务。每个服务器实例都有无穷的计算能力,但一次只能处理一个任务。当一个新的任务到达时,如果所有服务器实例都忙碌,那么该任务将被丢弃;否则,新任务将被分配给下一个空闲的服务器实例。在这个场景中,我们想要找到最繁忙的服务器实例列表。
假设这个云计算平台有k个服务器,编号为0到k-1,这些服务器并行处理多个请求,每个服务器有无穷的计算能力但是不能同时处理超过一个请求。请求分配到服务器的规则如下:
第i(序号从0开始)个请求到达。如果所有服务器都已被占据,那么该请求被舍弃(完全不处理)。如果第(i%k)个服务器空闲,那么对应服务器会处理该请求。否则,将请求安排给下一个空闲的服务器。比方说,如果编号」服务器在忙,那么会依次查看j+1号服务器,j+2号服务器等等。如果直到k-1号服务器都没有空闲,则继续从0号再依次查找空闲服务器。
给一个严格递增的正整数数组m(下标从0开始),m[i]表示第i个任务的到达时间,和另一个正整数数组n(下标从o开始),其中 n[i]表示第i个请求的工作量(也就是服务器完成它所需要的时间)。根据上面请求执行规则,找到最繁忙的服务器列表。最繁忙定义为处理的请求数是最多的。
输入一行,包含正整数k,严格递增的正整数数组m和正整数数组n。k,m,n用空格分隔。m和n的元素用逗号分隔。输出用逗号分隔的最繁忙的服务器列表,服务器列表按照服务器的编号排序。
样例1:
输入:3 1,2,3,4,5 5,2,3,3,3
输出:1
说明:k=3;m = 1, 2, 3, 4, 5;n = 5,2,3,3,3
3个服务器,编号为0,1,2。然后有5个请求,编号0,1,2,3,4,分别在时间1,2,3,4,5到达。
所有服务器一开始都是空闲的。0,1,2号请求分别由 3 台服务器依次处理。这3个请求结束时间分别为6(1+5,请求开始时间1加上任务执行时间5),4(2+2请求开始时间2加上任务执行时间2),6(3+3,请求开始时间3加上任务执行时间3)。3号请求进来的时候,按照(i%k)得到3 %3=0,先分配给0号服务器。此时0号服务器被占据,所以它被安排到下一台空闲的服务器,也就是1号服务器。3号请求结束时间为7(4+3,请求开始时间4加上任务执行时间3)。4
号请求进来的时候,时间是5,由于所有服务器都被占据,该请求被舍弃。0号服务器和2号服务器分别都处理了一个请求,1号服务器处理了两个请求。所以1号服务器是最忙的服务器。
样例2:
输入:3 1,2,3 10,12,11
输出:0,1,2
解释:k=3;m = 1,2,3;n = 10,12,11
每个服务器分别处理了一个请求,所以它们都是最忙的服务器。
样例3:
输入:1 1 1
输出:0
解释:k=1;m=1;n=1;0号服务器处理了一个请求,输出结果为0。
编程题2:
新郎为迎娶新娘,需要面对n个伴娘的拦截。新郎每次从当前位置选择下一步移动到后面第一个或者第二个伴娘处,但是移动前需要给出当前位置伴娘所需金额红包cost[n]。
请设计一段程序,帮新郎计算一下,如何用最小金额的红包到达新娘面前。
假设:
给出n+1个正整数,第一个数字代表伴娘的总个数,第二个数字开始,每个数字分别代表此位置上伴娘需要的红包的金额cost[n]。
一旦新郎支付了此位置伴娘的红包,即可选择向前,然后面又对后面下一个或者再下一个伴娘的拦截,若没有再下一个伴娘,则成功到达新娘面前。
示例1:
输入:3 5 10 15
输出:10
解释:一共有3个伴娘,第一个需要5元红包,第二个需要10天元红包,第三个需要15元红包。
新郎开始可以花费0,直接选择走到第二个红娘面前,然后支付10元红包后向前继续,因为后面只有一个伴娘,不存在再下一个伴娘,所以总红包10元即可到达新娘面前。
示例2:
输入:10 1 5 1 1 1 66 1 1 88 1
输出:6
解释:新郎开始选择到第一个伴娘处,花费0
-支付1,继续向前到再下个伴娘,到达第3个伴娘处。
-支付1,继续向前到再下个伴娘,到达第5个伴娘处。
-支付1,继续向前到再下个伴娘,到达第7个伴娘处。
-支付1,继续向前到下个伴娘,到达第8个伴娘处。
-支付1,继续向前到再下个伴娘,到达第10个伴娘处。
-支付1,到达新娘处。
总花费为6。
#通信硬件人笔面经互助#