美团暑期实习

一、笔试篇(Python3实现)

1、前言-python如何实现多行输入

(1)数字输入

n = int(input())  #输入一个整数
a, b = map(int, input().split())  #输入两个整数
c = list(map(int, input().split()))  #输入一个列表

(2)字符输入

s = input().split()#输入一串字符串
s = input().split(' ')#将输入的字符串以空格的形式分割开来,并返回一个list类型的

import sys #实现多行的字符串输入
for line in sys.stdin:
    s = line.split()

 2、美团3.25暑期笔试

(1)题目描述:

小美是一个火车迷。最近她在观察家附近火车站的火车驶入和驶出情况,发现火车驶入和驶出的顺序并不一致。经过小美调查发现,原来这个火车站里面有一个类似于栈的结构,如下图所示:例如可能1号火车驶入了火车站中的休息区s,在驶出之前2号火车驶入了。那么在这种情况下,1号火车需要等待2号火车倒车出去后才能出去(显然被后面驶入的2号火车挡住了,这个休息区s只有一个出入口)。出于好奇,小美统计了近些天的火车驶入驶出情况,开始统计和结束统计时休息区s中均是空的。由于中途疏忽,小美觉得自己好像弄错了几个驶入驶出顺序,想请你帮她验证一下。值得注意的是,小美虽然可能弄错了顺序,但对火车的记录是不重不漏的。形式化地来形容休息区s,我们视其为一个容量无限大的空间,假设两列火车 i 和 j 同时处于休息区s中,驶入时刻Tin满足Tin(i)<Tin(j),则驶出时间Tout必定满足Tout(i)>Tout(j),即,先进后出。

输入描述

第一行一个整数T表示数据组数。

对每组测试而言:

第一行一个整数n,表示观察到的火车数量。

第二行n个整数x1,x2,...,xn,表示小美记录的火车驶入休息区s的顺序。

第三行n个整数y1,y2,...,yn,表示小美记录的火车驶出休息区s的顺序。

1≤T≤10,1≤n≤50000,1≤xi,yi≤n, 且{xn} 、{yn} 均为{1,2,3,...,n}的一个排列,即1~n这n个数在其中不重不漏恰好出现一次。

输出描述

对每组数据输出一行:如果小美记录的驶入和驶出顺序无法被满足则输出No,否则输出Yes。

样例输入

3
3
1 2 3
1 2 3
3
1 2 3
3 2 1
3
1 2 3
3 1 2

样例输出

Yes
Yes
No

实现代码: 

#美团笔试题1:栈的进出问题
import sys
data_num = int(input())
res = []
for i in range(data_num):
    data_len = int(input())
    pushV = input().split(' ')
    popV = input().split(' ')
    if len(pushV) == 0 or len(popV) == 0:
        print(False)
    res = []
    j = 0
    for k in pushV:
        res.append(k)
        while (res and res[-1] == popV[j]):
            res.pop()
            j += 1
    print(j == len(popV))

参考: 栈的压入、弹出序列_牛客题霸_牛客网

 (2)题目描述:

小美因乐于助人的突出表现获得了老师的嘉奖。老师允许小美从一堆n个编号分别为1,2,...,n的糖果中选择任意多个糖果作为奖励(每种编号的糖果各一个),但为了防止小美一次吃太多糖果有害身体健康,老师设定了一个限制:如果选择了编号为 i 的糖果,那么就不能选择编号为 i-1, i-2, i+1, i+2的四个糖果了。在小美看来,每个糖果都有一个对应的美味值,小美想让她选出的糖果的美味值之和最大!作为小美的好朋友,请你帮帮她!

输入描述

第一行一个整数n,表示糖果数量。

第二行n个整数a1,a2,...,an,其中ai表示编号为 i 的糖果的美味值。

1≤n≤50000 , 1≤ai≤10000

输出描述

输出一行一个数,表示小美能获得的糖果美味值之和最大值。

样例输入

7
3 1 2 7 10 2 4

样例输出

14

提示

最优的方案是选择编号为1,4,7的糖果。

如果选了编号为5的美味值为10的那颗糖果,最多能获得的美味值仅为13,不如上述方案优。

思路:dp[i]=max(dp[i - 3] + nums[i], dp[i - 1], dp[i - 2]);这里注意dp[0]、dp[1]、dp[2]初始化的分别为s[0],s[1],s[2],因为在选择前三个糖果的时候,是没法往前选择的。

实现代码:

#美团笔试题2,每次只能取它前三个或者后三个数
n = int(input())
s = input().split(' ')
for i in range(len(s)):
    s[i] = int(s[i])
dp = [1]*(n)
dp[0] = s[0]
dp[1] = s[1]
dp[2] = s[2]
for i in range(3,n):
    dp[i] = max(dp[i-3] + s[i], dp[i-2], dp[i-1])
print(dp[n-1])

 (3)题目描述:

小美明天要去春游了。她非常喜欢吃巧克力,希望能够带尽可能多的巧克力在春游的路上吃。她现在有n个巧克力,很巧的是她所有的巧克力都是厚度一样的正方形的巧克力板,这n个巧克力板的边长分别为a1,a2,...,an。因为都是厚度一致的正方形巧克力板,我们认为第 i 个巧克力的重量为。小美现在准备挑选一个合适大小的包来装尽可能多的巧克力板,她十分需要你的帮助来在明天之前准备完成,请你帮帮她。

输入描述

第一行两个整数n和m,表示小美的巧克力数量和小美的询问数量。

第二行n个整数a1,a2,...,an,表示n块正方形巧克力板的边长。注意你不能将巧克力板进行拆分。

第三行m个整数q1,q2,...,qm,第 i 个整数qi表示询问:如果小美选择一个能装qi重量的包,最多能装多少块巧克力板?(不考虑体积影响,我们认为只要质量满足要求,巧克力板总能塞进包里)

1≤n,m≤50000,1≤ai≤104,1≤qi≤1018

输出描述

输出一行m个整数,分别表示每次询问的答案。

样例输入

5 5
1 2 2 4 5
1 3 7 9 15

样例输出

1 1 2 3 3

提示

包最大重量为1,能装12

包最大重量为3,也最多只能装12重量(如果添加22就超载了)

包最大重量为7,能装12+22

包最大重量为9,能装 12+22+22(因为有两块巧克力板边长都为2)

包最大重量为15,也最多能装 12+22+22(如果添加42就超载了)

思路:我用dp做的

实现代码:

????

(4)题目描述:

小美因为自己差劲的表达能力而苦恼,小美想制作一个解释器,这样她可以在无法表达的情况下让解释器帮她解释。好巧不巧小美翻开了编译原理的书,找到了解释器的制作方式,她决定先制作一个书上习题中描述的小小解释器试试。

小美需要读入一行字符串,其格式为"key1=val1; key2=val2; ...; keyn-1=valn-1; keyn=valn;"(不包含引号)这样的n对key,value对,其中keyi和vali为第 i 对key,value对,且均为仅包含大小写英文字母、数字与斜杠的非空字符串。例如对于字符串"SHELL=/bin/bash;HOME=/home/xiaomei;LOGNAME=xiaomei;",那么其中包含三对key,value对,以(key,value)形式展示,分别为(SHELL,/bin/bash)、(HOME,/home/xiaomei)、(LOGNAME,xiaomei)。

接下来,小美的解释器需要接受q次询问,每次询问给出一个仅包含大小写英文字母、数字与斜杠的非空字符串,如果存在某对key,value对的key值与之相同,那么输出对应的value;如果存在多对key,value对的key值与之相同,那么输出其中编号最大的,也即最后那一对的value值;如果一对也不存在,那么输出EMPTY。

输入描述

第一行一个字符串S,满足题中所述格式。

接下来一个整数q,表示有q个询问。

接下来q行,每行一个仅包含大小写英文字母、数字与斜杠的非空字符串,分别为S1,S2,...,Sq,依次表示q次询问。

令|S|表示字符串S的长度。

S中至少包含一对key,value对。

输出描述

输出q行,每行一个字符串表示答案。

样例输入

LOGNAME=default;SHELL=/bin/bash;HOME=/home/xiaomei;LOGNAME=xiaomei;
4
SHELL
HOME
LOGNAME
logname

样例输出

/bin/bash
/home/xiaomei
xiaomei
EMPTY

提示第3个询问有两对满足分别是第1对和第4对,选择编号大的(也就是后者),为xiaomei而不是default。第4个询问不存在满足的,输出EMPTY。

思路:字符串切割+哈希表(字典序)

实现代码:

#美团笔试题4
s = 'LOGNAME=default;SHELL=/bin/bash;HOME=/home/xiaomei;LOGNAME=xiaomei;'
s = input().split(';')
dic = {}
for item in s:
    if(item):
        k = item.split('=')
        dic[k[0]] = k[1]
q = int(input())
for i in range(q):
    key = input()
    if(key not in dic.keys()):
        print('EMPTY')
    else:
        print(dic[key])
# print(dic.keys(),dic.values())分别获取字典序的keys值集合和values集合

(5) 

题目描述:

时间限制: 3000MS

内存限制: 589824KB

题目描述:

小美特别爱吃糖果。小美家楼下正好有一个糖果专卖店,每天供应不同种类的糖果。小美预先拿到了糖果专卖店接下来n天的进货计划表,并针对每天的糖果种类标注好了对小美而言的美味值。小美当然想每天都能去买糖果吃,不过由于零花钱限制(小美零花钱并不多!)以及健康考虑,小美决定原则上如果今天吃了,那么明天就不能吃。但小美认为凡事都有例外,所以她给了自己k次机会,在昨天已经吃了糖果的情况下,今天仍然连续吃糖果!简单来说,小美每天只能吃一次糖果,原则上如果昨天吃了糖果那么今天就不能吃,但有最多k次机会打破这一原则。小美不想浪费每次吃糖果的机会,所以请你帮帮她规划一下她的吃糖果计划,使得她能吃到的糖果美味值最大。

输入描述

第一行两个整数n和k,表示拿到的进货计划表的天数和最多打破原则的次数。

第二行n个整数a1,a2,...,an,其中ai表示接下来第 i 天糖果专卖店的糖果的美味值。

1≤n≤2000,1≤k≤1000,1≤ai≤10000

输出描述

输出一行一个数,表示小美能吃到的糖果美味值之和最大值。

样例输入

7 1
1 2 3 4 5 6 7

样例输出

19

提示

最优的方案是选择选择第2、4、6天吃糖果,并在第7天打破一次原则也吃糖果(因为第6天已经吃过,原则上不能继续吃,需要使用一次打破原则的机会)。

规则

请尽量在全场考试结束10分钟前调试程序,否则由于密集排队提交,可能查询不到编译结果

点击“调试”亦可保存代码

编程题可以使用本地编译器,此页面不记录跳出次数

思路:dp[i][j]:前i天用了j次机会的最大美味值,j等于0:dp[i][j]=dp[i-1][j];j大于0:dp[i][j]=max(dp[i-1][j-1],max(dp[i-k][j])),其中k取值2-i;

实现代码:

???

二、面试篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/6637.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从大厂到创业公司,管理上需要怎样转变?

你好&#xff0c;我是舒超。 我职业生涯过去十年的上半段在腾讯负责微博微群、消息流广告、视频评论等社交型的业务系统&#xff0c;下半段在美团基础架构负责云原生基础设施的演进工作&#xff0c;现在星汉未来担任CTO&#xff0c;负责公司产研推进工作。加入星汉未来的时间点…

ChatGPT背后的技术和多模态异构数据处理的未来展望——我与一位资深工程师的走心探讨

上周&#xff0c;我和一位从业三十余年的工程师聊到ChatGPT。 作为一名人工智能领域研究者&#xff0c;我也一直对对话式大型语言模型非常感兴趣&#xff0c;在讨论中&#xff0c;我向他解释这个技术时&#xff0c;他瞬间被其中惊人之处所吸引&#x1f64c;&#xff0c;我们深…

获取元素通常使用的两种方式

一、 利用 DOM 提供的方法获取元素 document.getElementById()document.getElementsByTagName()document.querySelector 等逻辑性不强、繁琐二、利用节点层级关系获取元素 利用父子兄节点关系获取元素逻辑性强&#xff0c; 但是兼容性稍差DOM树&#xff1a; 文档&#xff1a;…

【华为机试真题详解JAVA实现】—坐标移动

目录 一、题目描述 二、解题代码 一、题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 输入: 合法坐标为A(或者D或者W或者S) +…

携手共进 智享未来丨美格智能2023年代理商合作伙伴大会成功举办

稳舵扬帆蓄势起&#xff0c;乘风破浪正当时。3月31日&#xff0c;美格智能2023年代理商合作伙伴大会于上海盛大召开&#xff0c;全国各地的代理商合作伙伴、美格智能CEO杜国彬、高级副总裁范典、高级副总裁李鹏、高级副总裁张成赞以及公司管理、研发、营销、市场、制造管理人员…

阿里9年测试经验告诉你:作为一名年薪40w自动化测试需要具备那些能力

前言 前段时间张同学问我说&#xff1a;我已经功能测试2年多了&#xff0c;在功能测试的阶段中也一直在自学自动化测试&#xff0c;有了一定的代码基础还学习了很多的工具&#xff0c;问题是我不知道自动化测试到底需要具备什么样的能力。 我相信有很多小伙伴也是在思索这个问…

机械硬盘的工作原理

每个磁盘的表面都有高速扫过的记录磁头。 每个磁盘上都覆盖着一层薄薄的微小的磁化金属粒。 数据以一种肉眼无法分辨的形式存在。很多组微小颗粒形成的磁化图案记录形成了数据。每一组&#xff0c;又称之为比特&#xff08;bit&#xff09;。 所有微粒都按照自身的磁性排列…

Idea 插件、快捷键

一、Extensions 插件 1. 功能 Plugins说明Translation翻译插件Grep Console配置自己喜欢的 Console 颜色NyanProgressBar绚丽多彩的颜色Background Image Plus 背景设置成你喜欢的图片CodeGlance查看缩略图一样&#xff0c;快速切换到所要的代码区域Mario Diven Development超…

O2O、C2C、B2B、B2C是什么意思

一.O2O、C2C、B2B、B2C的区别在哪里&#xff1f; o2o 是 online to offline 分为四种运营模式 1.online to offline 是线上交易到线下消费体验 2.offline to online 是线下营销到线上交易 3.offline to online to offline 是线下营销到线上交易再到线下消费体验 4.online …

IDE装上ChatGPT,一天开发一个系统

昨天白天在写代码&#xff0c;晚上看了一场直播&#xff0c;是两个技术的直播&#xff1a; 一个是技术总监&#xff0c;一个是号称Java之父的余**。 结果Java之父被技术总监吊打。然后匆匆下播。 技术这玩意&#xff0c;真的就是真的&#xff01; 白天我开发了一个系统&…

PVE虚拟机安装爱快/iKuai软路由(爱快软路由虚拟机系统安装教程)

上篇提到PVE后&#xff0c;装LINUX CENTOS8&#xff0c;现在装个爱快软路由. 一、软硬件要求 1、安装好PVE虚拟环境的X86系统&#xff0c;32位爱快系统需要512MB以上内存&#xff0c;64位爱快系统需要4GB以上。 2、双网口主板&#xff0c;如果是单网口要配置openwrt/LEDE为单…

php+微信小程序 websocket

一、需求背景 根据需求小程序有个页面需要实时刷新数据&#xff0c;前端轮询太费性能&#xff0c;所以采用websocket。 小程序只允许xss协议&#xff0c;因为要https的嘛。websocket协议就是ws&#xff0c;https的就是wss。 二、小程序文档 wx.sendSocketMessage(Object ob…

C/C++每日一练(20230403)

目录 1. 阶乘后的零 &#x1f31f; 2. 不同路径 II &#x1f31f;&#x1f31f; 3. 爬楼梯 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 阶乘后的零 给定一个整数…

ToBeWritten之MIPS汇编基础铺垫

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

aspnet030高校学生团体管理系统sqlserver

net030高校学生团体管理系统 . 1.用户基本信息管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 2.学生成绩管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 3.学生团体信息管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 4.教…

夜天之书 #80 推特开源算法与开放革命

3 月 31 日&#xff0c;马斯克如约开源了一系列推特推荐算法代码[1]。Twitter 开源推荐算法代码这次开源代码的操作&#xff0c;出发点跟大多数商业公司不太一样。我在《企业实践开源的动机》当中提到的动机&#xff0c;要么是扩展软件的生态&#xff0c;要么是拿来即用后的回馈…

springcloud整合knike4j聚合微服务接口文档

一、介绍 在使用微服务架构开发的过程中&#xff0c;由于每个微服务都是独立的&#xff0c;因此很多开发人员在提供接口文档时&#xff0c;针对每一个服务也提供了独立的接口文档&#xff0c; 在使用容器部署的环境中缺点也更加突出&#xff0c;本来每一个服务容器都是通过网…

蓝桥杯 路径

答案 import mathdef lcm(i,j):m math.gcd(i,j)return i*j//m n 2021 dp [float(inf)]*2022 dp[1] 0 for i in range(1,n1):for j in range(i1,i22):if j > n:breakdp[j] min(dp[j],dp[i]lcm(i,j)) print(dp[n]) 对dp[j] min(dp[j],dp[i]lcm(i,j))的解析&#xff1a;…

2.11 循环赛日程表

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 目录 书本内容&#xff1a; 我的理解&#xff1a; 更优化的算法&#xff1a; 总结 1.注意实现问题 2.当用C语言和C实现循环赛日程表算法时&#xff…

编译与链接相关知识

本文主要总结一些关于编译与链接的相关知识&#xff0c;内容来自于&#xff1a; 《深入理解计算机系统》第三版《程序员的自我修养》极客时间——编程高手必学的内存知识 前言 首先先看一下GCC编译过程的一个分解&#xff1a;如下图 cpp :预编译阶段处理宏定义、条件编译、…
最新文章