1015 百度2025校园招聘正式批在线笔试 算法题

考120分钟,有30道选择题(25单选,5多选),2道编程。

第一题:最大的乘积

题目描述

给定四个正整数a,b,c,d, 你可以进行若干次操作,每次操作可以从a,b,c,d中选择一个,然后令这个数加1,求操作后这四个正整数的乘积 a*b*c*d 的最大值。

输入描述

输入包含多组测试数据。

输入第一行包含一个正整数T(1≤T≤100),表示测试数据的数量。

接下来T行,每行四个正整数,包含a,b,c,d(1≤a,b,c,d≤20)四个数。

输出描述

对于每组测试数据输出一行一个整数,表示操作后这四个正整数的乘积 a*b*c*d 的最大值。

样例输入

2

1 2 3 4

1 2 1 3

样例输出

72

24

第二题:最大子段和

题目描述

输入一个长度为n的整数序列a1,a2,...,an,你的任务是找出连续的不大于子段,子段是指原序列中的连续一段,这两个子段不能有重复部分,且他们之间相隔必须大于等于k,同时,选择子段[1,5]和[8,10]是k=2的合法,但是k=3时就不合法了。

你需要最大化你选择的这两个子段的整数之和,请求出这个最大值。

输入描述

第一行输入一个正整数T,表示数据组数。

对于每一组数据,第一行输入两个数n,k。第二行输入n个整数a1,a2,...an。

1≤n≤10^4,0≤k≤n-2,1≤T≤5

输出描述

对于每一组数据,输出一个整数,表示答案。

样例输入

3

5 3

-1 1 2 3 -1

8 3

5 5 -1 -2 3 -1 2 -2

6 0

5 -1 5 0 -1 9

样例输出

-2

12

18

#笔试##算法##秋招#
全部评论
第一题优先队列,题目给的很小,最多就操作100次,优先队列不断拎出来最小的元素+1再放回去,最后相乘就是答案。第二题动态规划,力扣53最大子数组和的那道题,2个数组存从左往右和从右往左以i结尾的连续子数组的最大值,2个子数组算从左往右前i个元素和的最大值和从右往左前i个元素的最大值,然后for循环左边最大值取一段,空k个元素右边最大值取一段,不断把左右最大值相加比较就能得到全局最大。感觉这题还好,之前被小红书拷打了两次给我整不自信了。
2 回复 分享
发布于 10-15 20:48 四川

相关推荐

头像
10-15 20:24
门头沟学院 Java
大嘴蹦蹦鸡:第一题分奇偶,奇数时半数+1的情况和半数相等,单独处理一下就可以了。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务