美团笔试题及解析(时间:2022年9月3号)

article/2025/8/23 19:10:08

最新美团笔试题及解析(时间:2022年9月3号)

 

T1 乒乓球

乒乓球,被称为中国的“国球”,是一种世界流行的球类体育项目。一局比赛的获胜规则如下:
当一方赢得至少11分,并且超过对方2分及以上时,获得该局的胜利。
按照上述规则,小美和小团正在进行一局比赛,当前比赛尚未结束,此时小美的得分为a,小团的得分为b。小美想知道,在
最理想的情况下,她至少还要得多少分才可以赢下这场比赛。
输入描述
输入两个整数a、b。a表示当前小美获得的分数,b表示小团的分数。
0≤ a,b≤ 99.保证输入的比分合法,并且在该比分下比赛尚未结束。输出猫述
输出一个整数,表示小美至少还要得多少分才能获得这局比赛的胜利。input:
30 31output:
3

签到题。

a, b = list(map(int, input().split()))
if a >= 11 and a - b > 2:print(0)
else:print(max(11, b + 2) - a)

T2 mex

若S表示一个非负整数集合,mex(S)的值为不属于集合S的最小非负整数。例如,mex({0,1,4})=2,mex({1,2})=0。
有n个互不相同的非负整数a1,a2,…an构成了一个非负整数集合A。小美想知道若将a;(1≤i≤n)从集合A中删除,剩下的n-
1个数构成的新集合A'的mex值为多少?请输出i从1到n所有取值下新集合的mex值。
输入描述
第一行输入一个整数n,表示集合A的大小。
第二行输入n个整数a1,a2,…an。
n<5e4,ai≤1e9,保证ai互不相同。数字间两两有空格隔开。输出描述
输出n个整数,相邻两个数之间用空格隔开。其中第i个数表示从集合A中删除aj,剩下n-1个数构成的新集合的mex值。input:
4
5 0 3 1output:
2 0 2 1

首先求得原数组的mex值。删除一个数的时候,如果比这个mex值大,则不影响mex值,否则删除的数字为新的mex值。

n = int(input())
a = list(map(int, input().split()))
ans = []
s = set(a)
cnt = 0
for i in range(n + 2):if i not in s:cnt = ibreakprint(*[min(cnt,a[i]) for i in range(n)])

T3 字母树

给定一棵有n个节点的树,节点用1,2,…n编号。1号节点为树的根节点,每个节点上有一个用大写字母表示的标记。求每个
节点的子树中出现的字母标记种类数。
注:子树的定义:设T是有根树,a是T中的一个顶点,由a以及a的所有后裔(后代)导出的子图称为有根树T的子树。
输入描述
第一行输入一个正整数n,表示树的节点数量。
第二行输入n-1个正整数,第i个整数表示第i+1号节点的父亲节点。
第三行输入长度为n的由大写字母组成的字符串s1s2s3...sn,第i个字符si表示第i号节点的标记。
3≤n≤50000.
数据保证形成一棵合法的树,字符串由大写字母组成。
输出描述
输出n个整数,相邻两个数之间用空格隔开,第i个整数表示第i号节点的子树中出现不同的字母种类数。input:
6 
1 2 2 1 4
ABCCADoutput:
4 3 1 2 1 1

经典树遍历,因为只需要计算某个节点及其子树的出现的字母种类数,那么可以利用状态压缩的思想。假设你有一个26位的整数,某一位为0表示某个字母没出现过,某一位为1表明某字母出现过。比如10000000..0,表示只有一个A。

后序遍历即可,每次把子节点的结果汇聚到父节点。

n = int(input())
fa = list(map(int, input().split()))
s = input()
ans = [0] * n
g = [[] for _ in range(n)]
for i, c in enumerate(fa, start=1):g[c - 1].append(i)def solve(cnt):v = (1 << (ord(s[cnt]) - ord('A')))for nxt in g[cnt]: v |= solve(nxt)ans[cnt] = bin(v)[2:].count('1')return vsolve(0)
print(*ans)

T4 任务

有n个城市,城市从1到n进行编号。小美最初住在k号城市中。在接下来的m天里,小美每天会收到一个任务,她可以选择完
成当天的任务或者放弃该任务。第i天的任务需要在ci号城市完成,如果她选择完成这个任务,若任务开始前她恰好在ci号城
市,则会获得ai的收益;若她不在c号城市,她会前往c号城市,获得bi的收益。当天的任务她都会当天完成,任务完成后,
她会留在该任务所在的ci号城市直到接受下一个任务。如果她选择放弃任务,她会停留原地,且不会获得收益。小美想知道,
如果她合理地完成任务,最大能获得多少收益?输入描述
第一行三个正整数n,m和k,表示城市数量,总天数,初始所在城市。
第二行为m个整数c1, c2...cm,其中ci表示第i天的任务所在地点为ci
第三行为m个整数a1, a2...am,其中ai表示完成第i天任务且地点不变的收益。
第四行为m个整数b1, b2...bm,其中bi表示完成第i天的任务且地点改变的收益。
1<=k,ci<=n<=3e4
1<=m<=3e4
0<=ai,bi<=1e9输出描述
输出一个整数,表示小美合理完成任务能得到的最大收益。input:
3 5 1
2 1 2 3 2
9 6 2 1 7
1 3 0 5 2output:
13

先考虑一个自顶向下的dp,考虑函数f(i, k),表示从第i个任务开始,当前所在位置为k可以得到的最大收益。不难写出,一共有3种情况:

  1. 不完成这个任务,直接选择f(i+1, k)
  2. 完成这个任务,且c[i]==k,那么此时贡献为f(i+1, k)+a[i]
  3. 完成这个任务,且c[i]!=k,那么此时贡献为f(i+1, c[i])+b[i]

选大的即可,可以写出如下代码:

n, m, k = list(map(int, input().split()))
c = list(map(int, input().split()))
a = list(map(int, input().split()))
b = list(map(int, input().split()))@lru_cache(None)
def f(i, k):if i == m: return 0if c[i] == k: return f(i+1, k) + a[i]return max(f(i + 1, k),f(i + 1, c[i]) + b[i])
print(f(0, k))

因为n和m都是3e4,上面这个代码复杂度显然无法全部通过。现在考虑优化:

假设现在位置为k,当前任务所在地为c[i]。c[i]==k很好考虑,直接加上即可。如果c[i]!=k呢?我们需要考虑的是从某一个非k的位置转移过来。

注意,c[i]!=k时,我们只需要找一个非k的位置转移过来即可,并不需要考虑从哪个位置过来。而且无论从哪个位置转移过来,假设是j位置,贡献都是 上一次到达j位置的最大贡献+b[i]。那么我们只需要找到最大的上一次到达j位置的最大贡献

(插播一条广告:需要开通正版JetBrains全家桶的可以联系我,56元一年,正版授权,官网可查有效期,有需要的加我微信:poxiaozhiai6,备注:905。)

我们可以维护一个数组prepre[i]表示上次到达i位置可以获得的最大价值,利用这个数组,我们可以构造一版,假设当前位置为c[i]:pre[c[i]]=max(pre[c[i]], max{pre[j]+b[i] for j in range(1,n+1) if j!=c[i]} )

但是仍然不够,遍历pre仍然是一个n^2的过程,我们需要继续优化。可以发现,上面的pre[j]和i是无关的。我们每次转移的时候,只需要找到最大的pre[j]即可。但是如果单纯维护一个pre[j],有可能j和c[i]是相等的,可能造成转移出问题。那么我们只需要维护2个最大的pre[j],这样可以保证一定有一个值和c[i]不相等,最终达成一个时间复杂度O(n)的解法。

n, m, k = list(map(int, input().split()))
c = list(map(int, input().split()))
a = list(map(int, input().split()))
b = list(map(int, input().split()))h = [(0, i) for i in range(1, n + 1)]
pre = [-1] * (n + 1)
pre[k] = 0
v1 = (0, k) # 最大
v2 = (0, 0) # 次大for i in range(m):v = 0# 直通if pre[c[i]] != -1:v = max(v, pre[c[i]] + a[i])if c[i] != v1[1]:v = max(v, v1[0] + b[i])elif c[i] != v2[1]:v = max(v, v2[0] + b[i])pre[c[i]] = max(pre[c[i]], v)if v > v1[0]:if c[i] == v1[1]:v1 = (v, c[i])else:v1, v2 = (v, c[i]), v1elif v > v2[0]:v2 = (v, c[i])print(max(pre))

最后,点个赞吧,谢谢~


http://chatgpt.dhexx.cn/article/DEDfbRLv.shtml

相关文章

春招秋招--忆美团笔试

请看https://mp.weixin.qq.com/s/LKIHHOWAT_nRsD6D9Sma3Q ** **

2023校招美团笔试

这两天状态不是很好&#xff0c;美团笔试的题比较常规&#xff0c;五个编程&#xff0c;没有选择填空&#xff0c;做的一般&#xff0c;A了两道多&#xff0c;脑子感觉因为天天熬夜有点迟钝&#xff0c;最后几个题直接摆烂了。 第一题&#xff1a;送外卖 这道题当时思路出了点…

美团笔试题_20220409

前言 笔试一共五道编程题&#xff08;四一&#xff09;&#xff0c;一为专项编程题&#xff0c;估计不同岗位有题目不一样&#xff0c;使用的是赛码网&#xff0c;允许跳出界面使用自己的IDE。 在此感谢筱羊冰冰提供的部分题目及题解。 题目一&#xff1a;数圈游戏 给定一个…

美团笔试记录

美团笔试 今天下午参加了美团校招的笔试&#xff08;web前端/移动端&#xff09;&#xff0c;题型如下&#xff1a;20道选择题、20道专项选择题、2道编程题、1道论述题。但是我肯定不能说出具体是什么题目&#xff0c;毕竟好像要保护题目的隐私。 选择题 选择题难度有点大&a…

美团2023年春招在线前端笔试题回忆版

提示&#xff1a;题目不一定完全正确&#xff0c;只能说给大家参考会考察哪些知识点。 文章目录 前言一、单选&#xff08;计算机基础知识&#xff09;二、专项选择三、编程题1. 某地有一个火车站如下图所示&#xff0c;小红很好奇火车是怎么驶进驶出的&#xff0c;然后每天记录…

关于信息学奥赛一本通(C++版)在线评测系统 1153 绝对素数

信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统网址&#xff1a;信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn) 1153&#xff1a;绝对素数 时间限制: 1000 ms 内存限制: 65536 KB …

信奥一本通1365

1365&#xff1a;FBI树(fbi) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6443 通过数: 4366 【题目描述】 我们可以把由“0”和“1”组成的字符串分为三类&#xff1a;全“0”串称为B串&#xff0c;全“1”串称为I串&#xff0c;既含“0”又含“1”的串则称为…

信息学奥赛一本通评测系统P1336

恭喜你看到了这篇题解&#xff0c;他会让你避开很多坑(新手推荐&#xff0c;大佬提些建议嘛) 当然&#xff0c;我不想让大佬像下面这道题中大佬一样。[AHOI2017/HNOI2017]大佬 - 洛谷https://www.luogu.com.cn/problem/P3724 1336&#…

信息学奥赛一本通---1000:入门测试题目

1000&#xff1a;入门测试题目 时间限制: 1000 ms 内存限制: 32768 KB 提交数: 254022 通过数: 152601 【题目描述】 求两个整数的和。 【输入】 一行&#xff0c;两个用空格隔开的整数。 【输出】 两个整数的和。 【输入样例】 2 3 【输出样例】 5 答案如下: #…

信息学奥赛一本通(C++版)在线评测系统网址

信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/index.php

DMSP夜间灯光数据

数据和详细信息参见https://ngdc.noaa.gov/eog/dmsp/dmsp.html&#xff09; 1、美国国防气象卫星计划&#xff08;Defense Meteorological Satellite Program&#xff0c;DMSP&#xff09;由美国空军航天与导弹系统中心运作&#xff0c;卫星运行的线性扫描系统&#xff08;Oper…

大数据应用 | 关于夜间灯光数据在经济学应用的探讨

本文转载自公众号中国经济学教育科研网 原文信息&#xff1a;Gibson, J., Olivia, S., Boe-Gibson, G. and Li, C., 2021. Which night lights data should we use in economics, and where?. Journal of Development Economics, p.102602. 近年来&#xff0c;夜间灯光数据越来…

【数据】2012-2021NPP-VIIRS全球夜间灯光数据下载教程

2011年发射的新一代对地观测卫星Suomi NPP&#xff0c;该卫星搭载的可见光/红外辐射成像仪&#xff08;Visible Infrared Imaging Radiometer Suit&#xff0c;VIIRS&#xff09;能够获取新的夜间灯光遥感影像(Day/Night Band&#xff0c;DNB波段&#xff09;&#xff0c;分辨率…

数据分享|NPP/VIIRS夜间灯光数据(2012-2020逐月)

美国国家海洋大气管理局NOAA下属的国家环境信息中心NCEI下有专门对夜光数据加以处理的小组。他们发布每个月份的合成产品,也发布过2015、2016年的年度全球夜光数据集。 今天分享的夜间灯光数据正是来源于此。 一 数据来源 美国国家海洋大气管理局NOAA下属的国家环境信息中心…

珞珈一号01星(luojia1-01)的夜间灯光影像数据处理流程

珞珈一号01星&#xff08;luojia1-01&#xff09;的夜间灯光影像数据处理流程 书接上回&#xff0c;我们爬取了山东省的珞珈一号夜间灯光影像数据&#xff0c;现在我们来对数据进行预处理&#xff0c;以分区获取区域夜间灯光亮度值。 &#xff08;1&#xff09;加载珞珈一号夜…

基于珞珈一号夜间灯光数据的GDP空间化

ps&#xff1a;普普通通记录贴&#xff0c;地信菜鸡&#xff0c;以防结果被打回来重做然而忘了怎么操作。处理过程参考了很多论文&#xff0c;但操作还是自己来的&#xff0c;也有一点不专业的思考&#xff0c;所以也算原创吧。 记录&#xff1a; 一、数据获得与预处理 1、珞…

VIIRS-NPP夜间灯光数据处理

夜间灯光数据处理通常包括以下步骤&#xff1a; 原始数据读取&#xff1a;将夜间灯光数据从NPP或VIIRS卫星获取。数据预处理&#xff1a;清除数据中的噪声等。灯光数据网格化&#xff1a;将原始数据转换为网格数据&#xff0c;以便于后续分析。灯光强度统计&#xff1a;对网格…

中国范围夜间灯光逐月数据(2012-2021年)

中国范围夜间灯光逐月数据&#xff08;2012-2021年&#xff09;文件大小&#xff1a;25.81G&#xff0c;已处理好。 1.数据介绍 逐月的夜间灯光影像。原始的数据可从官网下载。 官网的链接为https://eogdata.mines.edu/products/vnl/。 进入官网找到Monthly Cloud-free DNB…

走近夜间灯光——教你平均灯光指数(ANLI)如何得到(超详细)

区域灯光总量&#xff08;总强度&#xff09;或者平均灯光&#xff08;灯光密度&#xff09;可以反映该区域的灯光特征[1] 根据常识&#xff0c;照明设施的密度和使用能够反映该区域的繁荣程度&#xff0c;故一个区域越亮&#xff0c;也就越繁荣&#xff0c;所以总强度和灯光密…

夜间灯光数据(npp/viirs)网格化处理全过程

1、准备遥感数据&#xff1a;下载的是2017年月度数据&#xff0c;共12组。 下载地址&#xff1a;科罗拉多矿业大学地球观测组(EOG) 网址&#xff1a;VIIRS Nighttime Light (mines.edu)https://eogdata.mines.edu/products/vnl/ 2、准备矢量数据&#xff1a;使用的是南京主城区…