20220820美团笔试题解
T1 烤串
题目:给定2个字符串,AB,依次输出A1B1A2B2...一直到末尾。
遍历一遍就可以了。
T2 定位
题目:
小团在地图上放了3个定位装置,想依赖他们进行定位! 地图是一个n*n的棋盘,有3个定位装置(x1,y1),(x2,y2),(x3,y3),每个值均在[1,n]内。 小团在(a,b)位置放了一个信标,每个定位装置会告诉小团它到信标的曼哈顿距离,也就是对于每个点,小团知道|xi-a|+|yi-b| 求信标位置,信标不唯一,输出字典序最小的。 输入n,然后3个定位装置坐标,最后是3个定位装置到信标的曼哈顿记录。输出最小字典序的信标位置。 input: 3 2 1 2 2 2 3 2 1 2 output: 1 2
题目给了范围和曼哈顿距离,遍历棋盘上所有合适的点。
注意遍历一个维度(比如x)就可以了,可以O(1)求出来另一个维度
T3 复习
题目:
小美将要期中考试,有n道题,对于第i道题,小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。 小美总分是每道题获得的分数。 小美不甘于此,决定突击复习,因为时间有限,她最多复习m道题,复习后的试题正确率为100%。 如果以最佳方式复习,能获得期望最大总分是多少? 输入n、m 接下来输入n个整数,代表pi%,为了简单期间,将概率扩大了100倍。 接下来输入n个整数,代表ai,某道题的分值 输出最大期望分值,精确到小数点后2位 input: 2 1 89 38 445 754 output: 1150.05
贪心,把每道题转化为要损失的价值,优先补损失高的。
T4 拟合
题目:
小团生目收到妈妈送的两个一模士样的数列作为礼物!他很开心的把玩,但是不小心没拿稳将数列摔坏了! 现在他手上的两个数列分别为A和B,长度分别为m。小团很想再次让这两个数列变得一样。他现在能做两种操作: 操作一:将一个选定数列中的某一个数a改成数b,这会花费|b-a|的时间 操作二:选择一个数列中某个数a,将它从数列中丢掉,花费a的时间。 小团想知道,他最能以多时间将这两个数列变得再次相同? 输入:n、m代表A、B的长度 接下来输入n个整数代表A序列 接下来输入m个整数代表B序列 输出最小时间。 input: 1 1 -9821 7742 output: 17563
经典编辑距离,只不过操作增加了不同的代价。
注意Python可能会超时,这个代码只是表明思路,建议使用C++。
附加题 修补
题目:
小美的火箭有一些地方坏了,为了修补一个地方,需要使用材料压着,幸好她有很多种这样的材料。 火箭上有n个地方坏了,每个地方至少需要bi单位重量的材料压住 小妹有m种材料,每种材料重量为aij 同时要求:一个地方只能使用一个材料,材料需要尽量小。 输入:n、m 输入n个数代表b序列 输入m个数代表a序列 输出最小总重量,如果没法满足,输出-1。 input: 3 3 4 1 3 4 2 1 output: 9
二分,每次找到一个需求重量以上最小的重量即可