0919携程笔试
T1: 一个n行m列的矩阵,用0 - n*m-1填充,从(0, 0)出发,每次移动一步,移动到的位置上可以获取这个点上的数值作为得分,当离开该点后这个点的得分会恢复。求进行k步操作后,最多可以获得多少分。
思路:先走到最后一行,然后往右走,如果可以走到最后一个格子,就在最后一个和倒数第二个之间来回走即可。
T2: 给一个长为n的数组,一个m,一个k,每次操作可以任意选择至少m个数,如果选出来的数最大值-最小值<=k的话,就删掉最小的数。求最后数组最少的剩余元素个数。
思路:排序+滑动窗口
T3: 给定一个数组,可以进行k次操作,每次可以将最多连续l个元素值变为任意值,求操作结束数组最小值是多少。
思路:二分结果即可,样例不强,一开始上来优先队列暴力就过了40
T4: 给定n个员工的出发位置,k个通行证所在位置,一个上班地点,员工只有取得了通行证才可以上班,求所有员工都去上班了的最小时间。
思路:员工位置从小到大排序,通行证位置从小到大排序。显然最大的难题是哪个通行证应该分配给哪个员工。贪心的思路是拿连续的n个通行证。对k做一个n的滑动窗口,然后通行证和员工就一一对应了,然后根据两者的位置和目的地的位置做一下分类讨论即可。
思路:先走到最后一行,然后往右走,如果可以走到最后一个格子,就在最后一个和倒数第二个之间来回走即可。
T2: 给一个长为n的数组,一个m,一个k,每次操作可以任意选择至少m个数,如果选出来的数最大值-最小值<=k的话,就删掉最小的数。求最后数组最少的剩余元素个数。
思路:排序+滑动窗口
T3: 给定一个数组,可以进行k次操作,每次可以将最多连续l个元素值变为任意值,求操作结束数组最小值是多少。
思路:二分结果即可,样例不强,一开始上来优先队列暴力就过了40
T4: 给定n个员工的出发位置,k个通行证所在位置,一个上班地点,员工只有取得了通行证才可以上班,求所有员工都去上班了的最小时间。
思路:员工位置从小到大排序,通行证位置从小到大排序。显然最大的难题是哪个通行证应该分配给哪个员工。贪心的思路是拿连续的n个通行证。对k做一个n的滑动窗口,然后通行证和员工就一一对应了,然后根据两者的位置和目的地的位置做一下分类讨论即可。
全部评论
t1按这个思路写的但是一直0%还耽误了好多时间
佬,能细说下第3题如何二分吗?没理解
第一题最开始超时,后面改了一下能100:因为路径完全是固定的,所以不不一步一步,直接算一口气走到最后一行或者最后一列,获得的财宝数量用等差数列求和来算。
第一题这个思路73%超时了,然后直接分类讨论优化反而只有53%了,不知道哪有问题,太菜了我。
求问最后一题贪心能过多少啊
第一题dfs是不是不行啊,只拿了27%
第四题也还可以用二分+贪心做,逼近一个最小最大时间
贪心有点难没想到,其他的还好。两小时四题对我这种菜鸡是比较友好的。😂
佬,携程后端笔试有选择题吗
相关推荐
10-30 15:37
哈尔滨工程大学 C++ 点赞 评论 收藏
分享