0
点赞
收藏
分享

微信扫一扫

美团后端2020.4.23笔试题目

半秋L 2022-04-25 阅读 154

美团后端2020.4.23笔试题目

第一题 考试座位

题目描述:

现在有n个人坐成一排进行上机考试。但他们有的使用C语言,用C表示;而有的使用Java,用J
表示。为了防止他们“友好交流”,小美老师要求任意座位相邻的两人之间使用的语言是不同
的。小美每次可以交换相邻两人的位置,现在她想知道最少交换多少次可以满足要求?

输入描述

输入一个整数n(1≤n≤106) ,表示有n个人。
然后输入n个字母c1,c2,… ,cn(ci∈{C,J})构成的字符串,表示每个人使用的语言。

输出描述

输出一个整数S,表示最少需要交换S次。若不可能满足要求,则输出-1。

样例输入

4
CCJJ

样例输出

1

样例解释

只需交换一次第二、三人,即可得到CJCJ。


第二题 小美炒股

时间限制: 1000MS
内存限制: 65536KB 4

题目描述:

小美最近在炒股。
小美只关注一支股票,而且她有着预测未来的能力,她提前知道了未来n天的股票价格(第 i 天 为ai)。小美每天只在收盘时的瞬间操作,所以可以认为每天股票价格是不变的。在股市出现
剧烈波动时,小美可能赚得过多,为了防止泄露超能力,她决定在总资金超过1e6=1000000
之后不再买入(但是卖出时间不定,仍要求卖出时有最大收益)。超过100万后,如果她还想
买入,可以捐款一些资金,使自己的资金不超过100万,这样她可以在超过100万前继续买入。
(即资金超过100万后,找以100万为本金的单次买卖的最大收益)
现在小美现在有1000元,她想知道如果一直最优抉择,她在n天后拥有多少钱?请你帮帮她。
(允许不买任意股票,购入股票数必须为整数)

输入描述

对于每一组数据,第一行一个正整数n;
第二行n个空格隔开的整数 a1,a2, … ,an 1≤n≤10000 ,1≤ai≤1000 输出描述
输出一个整数,表示小美最优决策后的金钱。

样例输入

5
101 102 100 101 103

样例输出

1039

样例解释

第一天买入9股,第二天卖出剩1009元,第三天买入10股,最后卖出剩1039元。


第三题 颜色排序

时间限制: 3000MS
内存限制: 589824KB 5

题目描述:

小美得到了一个长度为n的整数序列,并且序列上每个数字都被染上了颜色1~n的其中一种。现
在小美想要给这个序列按从小到大排序,但她每次操作只能交换相邻两个数,并且这两个数的
颜色要不相同。她想知道进行若干次操作之后能不能给这个序列排好序。

输入描述

第一行一个正整数T,表示有T组数据。
对于每一组数据,第一行一个正整数n,表示这个序列的长度;第二行n个正整数ai,表示该序
列;第三行n个正整数ci,表示第 i 个数的颜色。
数字间两两有空格隔开
1≤T≤8,1≤n≤104 ,1≤ai,ci≤n

输出描述

对于每一组数据,如果可以排好序,输出一行Yes;否则,输出一行No。

样例输入

2
5
3 2 4 1 5
1 2 2 3 1
3
2 2 1
1 1 1

样例输出

Yes
No

样例解释

第一组样例可以如下排序:
[3 2 4 1 5] -> [2 3 4 1 5] -> [2 3 1 4 5] -> [2 1 3 4 5] -> [1 2 3 4 5]


第四题 方格染色

时间限制: 5000MS
内存限制: 655360KB

题目描述:

小美从老师那里得到了一张N x M的方格纸(即N行M列),上面每个方格都染上了一种颜
色。
老师又给了小美另一张大小一模一样但是没有染色的方格纸,并对于方格纸上的每种颜色,老
师给了她一些大小为2 x 2的颜料笔,每次可以选择一个大小恰好为2 x 2的方格染成同一种颜
色(对已染色的方格也可以染色,同一种颜料笔可以用多次)。
老师想考考小美:能不能用这些颜料笔对这张未染色的方格纸进行染色,使得其与已染色的这
张方格纸一模一样?

输入描述

第一行一个正整数T,表示有T组数据。
对于每一组数据,第一行输入两个正整数N,M;
接下来N行,每行M个数,第 i 行第 j 列的数表示为 Cij,表示这个位置的方格的颜色。
数字间两两有空格隔开。
2≤N,M≤200 , 1≤Cij≤NM , 1≤T≤10

输出描述

对于每一组数据,如果可以染成与已染色的方格纸相同的话,输出一行Yes;否则,输出一行
No。

样例输入

2
4 4 
5 5 3 3 
1 1 5 3 
2 2 5 4 
2 2 4 4 
3 4 
1 1 1 1 
2 2 3 1 
2 2 1 1 

样例输出

Yes
No

提示

在这里插入图片描述


第五题 时间片轮转

时间限制: 3000MS
内存限制: 589824KB

题目描述:

时间片轮转算法是操作系统中用于进程调度的一类算法。其算法核心是:给操作系统指定一个
时间片,当目前正在运行的进程的运行时间大于或等于该时间片长度时,就将该进程打入等待
队列中,再从等待队列中提取队首的进程来运行。当进程在时间片内运行结束时,操作系统将
其退出(不加入等待队列),再取出等待队列的队首进程来运行。小美的课后作业就是用代码
模拟这样一个算法,但她还不会,请你教她。

输入描述

第一行两个正整数T,M,分别表示时间片长度(单位:毫秒)和操作次数。
接下来M行,每行形如如下格式之一:

- ADD x t:往等待队列的队尾加入一个编号为 x (正整数)的进程,该进程一共需要执行(正
整数) t 毫秒。在加入之后,如果当前没有程序正在执行,那么操作系统就会取出等待队列的
队首进程来运行。
- PASS t:
 1. 等待队列关闭的情况下,经过了 t 毫秒。即在这 t 时间,程序一直在执行同一进程
(有可能超过时间片长度 T,如果进程执行时间结束则处于宕机状态)。
 2. 在 t 毫秒结束时,才会根据时间片和进程是否结束更新等待队列。判断规则如下:
 2.1 若当前进程单次执行时间(从队首取出到现在)超过T则进入队尾,并取出队首
进程运行;
 2.2 若运行结束则直接取出队首进程运行;
 2.3 否则继续执行当前进程。(具体参见样例)
- QUERY:询问当前正在运行的进程的编号。如果当前没有进程运行,输出-1

数据保证所有的x都两两不同。至少含有一条QUERY操作。
2≤T≤105 , 1≤t≤6*105 , 1≤M≤400, 1≤x≤105

输出描述

对于每一个QUERY操作输出一行一个整数,表示当前正在运行的程序的编号。如果当前没有程
序正在运行,输出-1。

样例输入

5 10
ADD 1 10
QUERY
ADD 2 5
PASS 3
PASS 2
QUERY
PASS 10
QUERY
PASS 5
QUERY

样例输出

1
2
1
-1

提示

在这里插入图片描述

举报

相关推荐

美团3.12笔试题解

20220305美团笔试

美团笔试C

美团3.19 笔试 背包

美团后端二面

0 条评论