【美团秋招笔试】美团第一次笔试 2022-8-20
目录
- 前言
- Q1、烤串
- Q2、曼哈顿距离定位
- Q3、复习题目
- Q4、两个数列相同的最少代价
前言
今年美团最多可以参加三次笔试,三次取最佳成绩。可以做下参考下难度。
第三题,当时脑子坏了,没做出来…
然后第二题我用的两个for,超时了…
最后做了2.5道题,看来是无了…
这周六继续申请第二次笔试
Q1、烤串
问题类型:其实就是类似两个数组排序,属于送分题
题目描述:
小团想要自己来烤串!不过在烤串之前,需要串好烤串。小团有n个荤菜和n个素菜,他想按顺序分别一个荤菜一个素菜串起来,想请你帮他串好!
给出两个长度分别为n的仅包含小写英文字母的串A和B,分别代表荤菜和素菜的种类(用字母来表示菜的种类)。请你以从左到右的顺序依次串好他们!例如对于荤菜串A1、A2…An
和素菜串B1、B2…Bn,串好应该是A1、B1、A2、B2…An、Bn
输入:
- 第一行一个正整数n,表示烤串长度
- 第二行为一个长度为n的字符串A,表示荤菜按次序都是哪些菜
- 第三行为一个长度为n的字符串B,表示素菜按次序都是哪些菜
- 对于80%的数据,n≤1000,对于20%的数据,n≤50000,对于所有数据,A和B为仅包含小写英文字母的字符串
输出:输出一行,包含2n个字符串表示串好的烤串
def solver(A, B, m, n):res = ['a' for _ in range(m+n)]while m or n:res[m+n-1] = B[n-1]n -= 1res[m+n-1] = A[m-1]m -= 1return resif __name__ == '__main__':n = int(input())A = list(map(str, input()))B = list(map(str, input()))res = solver(A, B, n, n)print(''.join(res))
Q2、曼哈顿距离定位
问题类型:其实就是正常的遍历,但是如果直接两层for循环,50000x50000必会超时,所以要想办法把时间复杂度降到O(n),想办法用空间换时间:可以把abs(y1 - i)存储起来
这道题,如果直接两层for循环求三个集合的交集,必会超时;
题目描述:
小团在地图上放了三个定位装置,想依赖他们来进行定位!
小团的地图是一个n×n的一个棋盘,他在(x1,y1),(x2,y2),(x3,y3) xi,yi ∈ Z ∩ [1,n] 这三个位置分别放置了一个定位装置(两两不重叠);
然后小团在一个特定的位置(a,b)a,b ∈ Z ∩ [1,n]放置了一个信标。每个信标会告诉小团它自身到那个信标的曼哈顿距离,即对i=1,2,3 小团知道(|xi-a|+|yi-b|);
现在小团想让你帮他找出信标的位置!注意,题目保证最少有一个正确的信标位置;
因为小团不能定位装置确定出来的信标位置是否唯一,如果有多个,输出字典序最小的那个。(a,b)的字典序比(c,d)小,当且仅当 a<c或者a==c and b<d;
输入:
- 第一行一个正整数n,表示棋盘大小
- 第二行两个整数,分别表示x1与y1,即第一个定位器的位置
- 第三行两个整数,分别表示x2与y2,即第二个定位器的位置
- 第四行两个整数,分别表示x3与y3,即第三个定位器的位置
- 第五行三个整数,分别表示第一、二、三个定位器到信标的曼哈顿距离。第i个定位器到信标的曼哈顿距离即(|xi-a|+|yi-b|)
- 数字间两两有空格隔开,对于所有数据, n≤50000, 1≤xi,yi≤n
输出:两个整数 代表信标的位置
if __name__ == '__main__':n = int(input()) # 棋盘nxnx1, y1 = map(int, input().split()) # 第一个定位器的位置x2, y2 = map(int, input().split()) # 第二个定位器的位置x3, y3 = map(int, input().split()) # 第三个定位器的位置z1, z2, z3 = map(int, input().split()) # 信标距定位器1、定位器2、定位器3的距离# 分别记录三个定位器各种满足的位置mapp1, mapp2, mapp3 = dict(), dict(), dict()for i in range(1, n+1):# 用数学表达式来代替第二个for循环temp1 = abs(x1 - i)if z1 - temp1 >= 0:temp2 = y1 - (z1 - temp1)if temp2 >= 1:mapp1[(i, temp2)] = 1temp2 = y1 + (z1 - temp1)if temp2 <= n:mapp1[(i, temp2)] = 1temp1 = abs(x2 - i)if z2 - temp1 >= 0:temp2 = y2 - (z2 - temp1)if temp2 >= 1:mapp2[(i, temp2)] = 1temp2 = y2 + (z2 - temp1)if temp2 <= n:mapp2[(i, temp2)] = 1temp1 = abs(x3 - i)if z3 - temp1 >= 0:temp2 = y3 - (z3 - temp1)if temp2 >= 1:mapp3[(i, temp2)] = 1temp2 = y3 + (z3 - temp1)if temp2 <= n:mapp3[(i, temp2)] = 1common = dict(mapp1.items() & mapp2.items() & mapp3.items())res = []for key, val in common.items():res.append(key)x, y = res[0]print(x, y)
Q3、复习题目
问题类型:贪心
问题描述:
期中考试,有n道题,对于第i道题,有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。总分是每道题获得的分数之和。因为时间有限,最多复习m道题,复习后的试题正确率为100%。如果以最佳方式复习,能获得期望最大总分是多少?
输入描述:
- 第一行两个正整数n和m,表示总试题数和最多复习试题数;
- 第二行n个整数,分别为p1 p2…pn,表示小美有pi%的概率,即pi=pi/100的概率做对第i个题;
- 第三行n个整数,分别表示a1 a2…an,分别表示第 i 个题做对的分值;
- 数字间两两有空格隔开,对于所有数据,1≤m≤n≤50000,0≤pi≤100,1≤ai≤1000
if __name__ == '__main__':n, m = map(int, input().strip().split())P = list(map(int, input().strip().split()))scores = list(map(int, input().strip().split()))res = 0mapp = []for i in range(len(P)):# mapp[i][0] 这道题100%做错会丢掉多少分# mapp[i][1] 这道题100%做对会得到多少分mapp.append([(1-P[i])/100 * scores[i], scores[i]])# 按照做错的时候丢分大小进行降序排序mapp.sort(key=lambda x: x[0], reverse=True)for j in range(len(P)):if j < m: # 复习前面丢分多 100%会做这些题 拿到全部的分res += mapp[i][1]else: # 丢分不多的就拿正常的分res += mapp[i][1] - mapp[i][0]print('%.2f'%res)
Q4、两个数列相同的最少代价
经典DP:类似编辑距离
问题描述:
小团生日收到妈妈送的两个一模一样的数列作为礼物!他很开心的把玩,不过不小心没拿稳将数列摔坏了!
现在他手上的两个数列分别为A和B,长度分别为n和m。小团很想再次让这两个数列变得一样。他现在能做两种操作:
操作一是将一个选定数列中的某一个数a改成数b,这会花费|b-a|的时间;
操作二是选择一个数列中某个数a,将它从数列中丢掉,花费|a|的时间;
小团想知道,他最少能以多少时间将这两个数列变得再次相同!
输入:
- 第一行两个空格隔开的正整数n和m,分别表示数列A和B的长度
- 第二行n个整数,分别为A1 A2…An
- 第三行m个整数,分别为B1 B2…Bm
- 对于所有数据,1≤n,m≤2000, |Ai|,|Bi|≤10000
输出:输出一行一个整数,表示最少花费时间,来使得两个数列相同
这道题用DP也会超时,拿不到满分
if __name__ == '__main__':n, m = map(int, input().split())A = list(map(int, input().split())) # nB = list(map(int, input().split())) # mdp = [[float('inf')for _ in range(m+1)]for _ in range(n+1)]dp[0][0] = 0for i in range(1, n + 1):dp[i][0] = abs(A[i-1]) + dp[i-1][0]for j in range(1, m+1):dp[0][j] = abs(B[j-1]) + dp[0][j-1]for i in range(1, n+1):for j in range(1, m+1):if A[i-1] != B[j-1]:v1 = dp[i-1][j] + abs(A[i-1]) # 删除A[i-1]v2 = dp[i][j-1] + abs(B[j-1]) # 删除B[j-1]v3 = dp[i-1][j-1] + abs(A[i-1]- B[j-1]) # 把A[i-1]变成B[j-1]dp[i-1][j-1] = min(v1, v2, v3)else:dp[i][j] = dp[i-1][j-1]print(dp[-1][-1])
【美团秋招笔试】美团第一次笔试 2022-8-20相关推荐
- 2021秋招总结(内含笔试面试攻略)
每年都被称为就业最难的一年!!! 因为突如其来的疫情直到2020年6月才返校!!! 笔试面试准备合集 算法面试常考知识点 计算机网络面试常考知识点 Linux面试常考知识点 操作系统面试常考知识点 C ...
- 秋招Java开发工程师笔试_美团Java工程师面试题(2018秋招)
第一次面试 1.小数是怎么存的 2.算法题:N二进制有多少个1 3.Linux命令(不熟悉 4.JVM垃圾回收算法 5.C或者伪代码实现复制算法 6.volatile 7.树的先序中序后序以及应用场景 ...
- shl性格测试_德勤2021秋招网申Tips+SHL笔试原题
德勤校招时间表及对应的提醒 在线网申+线上笔试 2020年7月31日-2020年10月10日 "路人"说:一定一定一定要安排好网申时间--完成网申,即刻收到笔试,同时在收到笔试的5 ...
- 2021届美团秋招面试(接受录取意向书,还没谈薪资)
美团客户端秋招一面 前天晚上8:10左右还在图书馆的,突然接到美团的电话,我还以为是猿辅导的面试过了,然后打电话约时间的,然后hr说她是美团那边的,想约个面试时间,于是就爽快的答应了.....在图书馆 ...
- 2021年秋招遇到的前端笔试/面试题
** 本文仅用于记录本人2021年秋招遇到的部分前端笔试/面试题,答案仅供参考 ** 1.跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度 ...
- 【校招笔试】22届秋招各公司校招笔试面试汇总(不断更新)
文章目录 一.笔试 二.面试 三.相关题 一.笔试 [校招笔试]大华 - 软件岗 [校招笔试]诺瓦 - 嵌入式岗 [校招笔试]网易 - 测试岗 [校招笔试]爱奇艺 - 软件岗 [校 ...
- 2020美团秋招笔试题解
1. T1 问题: 小团深谙保密工作的重要性,因此在某些明文的传输中会使用一种加密策略,小团如果需要传输一个字动串S,则他会为这个字符串添加一个头部字符串和一个尾部字符串.头部字符用满足至少包含一个& ...
- 【2022-08-27】美团秋招笔试前四道编程题
恭喜发现宝藏!搜索公众号[TechGuide]回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经,目前已更新至美团.微软- 作者@TechGuide[全网同名] 点赞再看,养成习惯,您动动手指对原创作 ...
- 美团秋招笔试——算法岗
#include <cstdio> #include <iostream> #include <queue> #include <set> #inclu ...
最新文章
- 大牛带你深入SpringBoot:自定义Endpoint 及实现原理
- 技改之路:从单块应用到微服务,我的血泪总结--转
- 基于Redis的分布式锁实现
- 使用AndroidStudio创建自定义gradle插件并被引用实战例子
- java 内存屏障类型_Java内存模型精讲
- Java 10中的本地类型推断,或者如果它像鸭子一样嘎嘎叫
- 实验3 编程、编译、链接、跟踪
- 链式调用方法的实现原理和方法
- 删除下拉框只找23火星软件_下拉框搜索就找23火星软件/下拉框软件速来火星下拉...
- 浏览器插件及好用的小工具
- VirtualStudio:离线下载了20G、40G,安装时说缺少很多
- MATLAB中定积分的求解
- mysql监视执行sql语句_监控mysql执行的sql语句
- Java后端开发常用规范
- Oracle ORA-01033: 错误解决办法
- 机器学习算法之GMM模型
- 数据库中的SCHEMA到底是什么?MySQL
- 网络爬虫之东方财富网股票板块
- 面子对中国人为什么这么重要
- 仿生学运动特性分析,带来了哪些科研成果?
热门文章
- Bitstream Vera Sans Mono 编程字体安装
- Matlab坐标轴正负指数显示
- 全志平台Android4.0 SOFTAP STATION共存调试记录1
- 个人对23种设计模式总结 优缺点分析
- 是时候将你的Python版本升级到3.8了!为什么我选择Python3.8?
- git 删除本地未提交的内容
- sso单点登录的PHP实现(Laravel框架)
- troubleshooting之解决YARN队列资源不足导致的application直接失败
- @PersistenceContext和@Resource
- 读入一幅图像,对图像分别进行高斯低通、巴特沃兹低通、高斯高通和巴特沃兹高通频域滤波,比较其锐化和平滑效果。