百度笔试,春招3/7,客户端卷讨论

两题都是题目看起来贼复杂但是,看明白了很简单的那种。但是第二题死活有个用例没过思路很明显就是一个二分查找。不知道哪里没考虑清楚

题目:小明是一名魔法师,有一天他在和一个怪物战斗,小明会n种法术,释放第i种法术需要法力为si,且在整场战斗中只能释放一次,在第一个回合他可以释放0、1或者2种法术,释放2种法术总共消耗的法力值为这两种法术各自消耗的法力值之和,一回合消耗的法力值不能超过法力值的上限,且每回合刚开始他剩余的法力值会恢复到法力值上限。为了打出更高的伤害,他需要在最多k回合以内将每种法术释放一次,请问他法力上限至少是多少(即k个回合内每个回合需要使用的法力最大值最大值的最小理论值)。输入描述:第一行包含两个正整数n和k,分别表示法术数量和回合数。接下来一行包含n个正整数s1,s2,……sn为了释放n种法术所需要的对应法力值。彼此用空格隔开。其中 1<=n <=2k <=100000,1<=si<=100000.数据保证si按照从小到大的顺序给出,即s1<s2<=…….sn。输出描述:输出他需要的法力上限做少为多少

顺便贴一下第一题,相对简单不少

某银行将客户分为若干优先级,1级最高,5级最低,当你需要在银行办理业务时,优先级高的人可以随时插到优先级低的人前面。现在给出一个人员来和银行办理业务的时间序列,请你在每次办理银行业务时输出客户的编号。如果同时有多个优先级相同的用户,则按照先来后到的顺序办理。输入第一行是一个正整数,表示输入序列中的事件数量。其中n最大500,最小是1的整数。接下来一共n行输入,每一行的第一个字母为a或者p。当输入为a时,后面会有两个正整数num和x,表示到来的客户编号为num,优先级为x;当字符为p时,表示当前优先级最高的客户去办理业务。输出包含若干行,对于每一个p,输出一行,仅仅包含一个正整数num,表示对应客户编号。

思路:维护一个优先级队列,按顺序和等级添加,头一名出队就行。

#23届找工作求助阵地#
全部评论
第二题没写二分,贪心了一下,前n-k从右往左,从头加到后k上,然后遍历一下后k找最大就可以了
3
送花
回复
分享
发布于 2023-03-08 11:26 辽宁
法师,36%,不知道哪里错了
2
送花
回复
分享
发布于 2023-03-07 21:38 北京
滴滴
校招火热招聘中
官网直投
麻烦大佬们给个法师的题解
2
送花
回复
分享
发布于 2023-03-07 21:40 北京
笔试完状态又变回筛选中,有人跟我一样吗
2
送花
回复
分享
发布于 2023-03-12 16:47 浙江
请问百度流程是先笔试后筛选 简历吗?听说是海笔,是真的吗
1
送花
回复
分享
发布于 2023-03-10 18:22 北京
请问是在赛码网做的吗?是只有两道编程题嘛
1
送花
回复
分享
发布于 2023-03-11 13:16 广东
法师,蒙了86%,感觉像是DP题
点赞
送花
回复
分享
发布于 2023-03-07 21:48 广东
法师二分+双指针
点赞
送花
回复
分享
发布于 2023-03-07 21:50 北京
第一题刚开始我还没理解明白
点赞
送花
回复
分享
发布于 2023-03-07 21:53 北京
法师我用前缀和91%
点赞
送花
回复
分享
发布于 2023-03-07 22:00 美国
没参加笔试,法师这道题直接排序,然后双指针不就行了吗
点赞
送花
回复
分享
发布于 2023-03-08 01:11 北京
第一题法师是不是: if (k>=n) return s[n-1]; int tmp=-1; int left=0,right=2n-2k-1; while(left<=right){ tmp=max(tmp,s[left]+s[right]); ++left;--right; } return max(tmp.s[n-1]);
点赞
送花
回复
分享
发布于 2023-03-10 19:28 上海
第二题DP
点赞
送花
回复
分享
发布于 2023-03-11 19:11 山东

相关推荐

投递百度等公司8个岗位
点赞 评论 收藏
转发
12 16 评论
分享
牛客网
牛客企业服务