20240817的四场笔试
京东:10-12点 100+ 82+ 100
第一题直接两根柱子相减 n =(b-a),n相当于第n个柱子(1+2+3+.....+n),求和(n+1)*n/2-b就是雪的厚度(用long long记录).
第二题直接暴力遍历即可,数据范围1e3, O(n^2)能过。
第三题是一个图上的dp(有环和重边),用记忆化搜索,正向递推或者逆向递推都可以。正向递推:dp[i][j]在i城市时剩余j时的方案数目。将输入的u、v、w用vector<vector<pair<int,int> > > vec,u当做下标,存入v、w到vec[u](有重边)。记忆化搜索从ddfs(0,a)到dfs(n,0)即可。以及记录是否超过么mod值20220201的方法:将+和%分开,先加,然后判断是否超过mod,然后记录下来,最后在取模。
网易雷火:14-17点 100+ 100+ 0 + 30
第一题可以想把hh:mm转换成分钟,然后对每一个边界时刻遍历,迭代累加,取最大。
第二题是辈分差在3以内的不能有情缘关系,先用一个拓扑排序记录辈分,然后查找(小坑:可能存在多个师门,不仅要记录辈分,还有记录祖师爷的id。没有师门关系的要先判断,不然默认的0会导致bug)
第三题写了一个半小时,精神和心态都炸裂了。
第四题看着是一个二维的线段树,不会写,写了一个暴力的O(m*n)解法
Bilibili:19-20点 100+ 100+ 100
第一题太简单了,记不清了。
第二题是设字符串长度为n,整数长度为m。如果整数比字符串长,直接返回(n+1)*n/2。如果整数不比字符串长:首先把字符串中长度为[1,m-1]的子数组统计一下(是一个n,n-1,......,n+2-m的等差数列,求和)。然后正向遍历字符串中长度为m的子字符串,直接与整数k的字符串比较。或者转成longlong比较
第三题背包dp的变形,首先用m-=arr[0].然后对abs(arr[1]),....,abs(arr[n-1])的abs求和得到sum。
sum <= abs(m) 直接返回 abs(sum-abs(m))
然后将区间和从[-sum,sum]转换成[0,2*sum],m+=sum
然后从dp[0][sum]=1的初始状态开始背包问题求解
米哈游:20-22点 100+ 100+ 0
第一题首先判断是否<=300,直接返回ceil(n/10)即可。然后贪心的思路,优先买月卡(每买一次,n-=300; n-=min(30,m);m-=30)
第二题是用线段树区间修改,维护区间最小值。然后对每一个查询,区间最小值>=2时说明可以被解雇,ret++。
第三题递推怎么写都是O(n^2),但当时大脑已经死机了,debug不出来。
8个小时,太要命了
#笔试##京东##网易雷火##bilibili##米哈游#