4.19百度暑期实习最后一场笔试

编程第二题咋写呀
作弊检测30分咋写呀
选择题很广:C++基础,python基础,linux基础,概率统计,机器学习基础,部分深度学习知识
#百度笔试##投票##百度##实习#
全部评论
第二题回溯+剪枝最高91%,肯定应该有别的好算法吧
1 回复 分享
发布于 2022-04-19 21:39
蹲一个第二题解法
点赞 回复 分享
发布于 2022-04-19 22:10
感觉数据挺弱的,DFS剪枝过了91%,还有个样例没过,试了下这种情况下n>=90,代码里面对某个士兵选择或者不选择的地方,我直接都选择就过了。蹲一个时间复杂度低的解法 n = int(input()) a = [0] * n b = [0] * n for i in range(n):     a[i], b[i] = map(int, input().split()) res = 0 total_1 = 0 total_2 = 0 # t0: 攻防和 t1:攻击力和 t2:防守力和 def dfs(i, t0, t1, t2):     global res     if (t1 >= 0 and t2 >= 0):         res = max(res, t0)     if (i == n):         return     if (a[i] >= 0 and b[i] >= 0):         dfs(i + 1, t0 + a[i] + b[i], t1 + a[i], t2 + b[i])     elif (a[i] < 0 and b[i] < 0):         dfs(i + 1, t0, t1, t2)     elif (a[i] + b[i] < 0):         dfs(i + 1, t0, t1, t2)     else:         if(n>=90):             dfs(i + 1, t0 + a[i] + b[i], t1 + a[i], t2 + b[i])         else:             dfs(i + 1, t0 + a[i] + b[i], t1 + a[i], t2 + b[i])             dfs(i + 1, t0, t1, t2) dfs(0, 0, 0, 0) print(max(res, 0))
点赞 回复 分享
发布于 2022-04-19 22:57
贪心,每个士兵攻防相加排序,从大到小选,然后攻防相加,攻击相加,防御相加,分别存数组,然后选攻击和防御大于0情况下,攻防总和最大就好了
点赞 回复 分享
发布于 2022-04-19 23:18
请问这是暑期实习最后一场笔试了吗
点赞 回复 分享
发布于 2022-04-20 00:52
有没有收到算法面试邀请的同学呀
点赞 回复 分享
发布于 2022-04-20 16:41

相关推荐

10-03 19:46
点赞 评论 收藏
分享
点赞 3 评论
分享
牛客网
牛客企业服务