美团秋招笔试 – 20230429

1. 踢皮球

题目描述:
某大学最近正在进行选课。对于学校开设的部分课程,只允许大一至大四中部分年级和部分学院的学生在选课系统中自行选课,年级或学院不符合要求的学生只能通过教务科代为选课。但是不幸的是,各个学院教务科只能帮自己学院的学生选择自己学院开设的课程。
此时出现的一个问题是,A学院的小美想请教务处代选B学院开设的课程时,A学院的教务科没有权限将学生添加到B学院开设的课程,因此让小美去找B学院的教务科,B学院的教务科没有权限调取就读A学院学生的个人信息,因此让小美去找A学院的教务科。此时我们说小美被踢皮球了。
为了方便处理,可以认为一共有n门课程,编号为1~n;m个学院,编号为1~m。给出n门可选课程及其开课学院、允许在系统选课的年级和专业,进行q次查询,每次查询给出学生所属学院和待选课程。若可以自行在选课,输出”Help yourself”(不包括引号,下同);否则若可以由教务处成功代选,输出”Ask for help”;否则说明该学生会被踢皮球,输出”Impossible”。
注意:只有年级和学院都不被限制的学生可以自行选课。

输入描述:
第一行输入3个正整数n,m,q
第二行输入n个正整数si,表示编号为i的课程的开课学院为si;
接下来4行输入一个4×n的01矩阵f,fij=0表示不允许i年级的学生自行选j课程,fij=1则表示允许;
接下来m行输入一个m×n的01矩阵g,gij=0表示不允许i学院的学生自行选j课程,gij=1则表示允许;
接下来q行,每行输入3个正整数a,b,c ,表示学生所属学院、年级、待选课程。
n,m<=1000, 1<=si<=m, 0<=fij,gij<= 1, 1<=a<= m, 1<=b<=4, 1<=c<= n。

输出描述:
输出共q行,每行一个字符串表示对应查询的结果。

样例输入:
5 2 4
1 2 2 1 1
1 0 0 0 0
0 0 1 1 1
0 0 0 0 1
0 0 1 0 1
1 0 0 1 1
0 1 0 0 0
2 2 3
2 3 2
2 3 1
1 2 4

样例输出:
Ask for help
Ask for help
Impossible
Help yourself

提示:
对第一个查询,3号课程不限制2年级学生自行选课,但限制2号学院的学生选课,因此该学生不能自行选课。幸运的是,3号课程是2号学院开设的课程,因此该学生可以找2号学院教务处帮忙代选。
对第二个查询,2号课程不限制2号学院的学生自行选课,但限制3年级学生选课,因此该学生不能自行选课。同样的,2号课程由2号学院开设,可以找2号学院教务处代选。
对第三个查询,1号课程限制2号学院和3年级学生自行选课,因此该学生不能自行选课。由于开课学院是1学院,2学院教务科没有添加权限;由于学生学院是2学院,1学院没有查看学生信息的权限,因此该学生被踢皮球。
对第四给查询,4号课程不限制1号学院和2年级学生自行选课。

2. 限行

题目描述:
在小美的城市,为了保证交通顺畅,在周一至周日的每一天都会对部分车辆限行。例如周一不允许车牌号最后一个数字为0、1、2的车辆出行,周二不允许车牌号最后一个数字为3、4、5的车辆出行……然而小美是个有钱人,因此她决定多买几辆车,以保证她每天都至少有一辆车可以出行。假设小美可以任意选择车牌号的最后一位数字,请你告诉她至少需要买几辆车?如果小美无法达到目标,输出-1即可。

输入描述:
输入共7行,表示周一至周日的限行情况。
每行第一个数字ci表示当天限行数字个数,随后输入ci 个互不相同的数字aij,表示限行数字。
对于所有的数据,0≤ci≤10, 0≤aij≤9。

输出描述:
一行,输出一个整数,表示小美需要的最少车辆数或小美不能保证每天都至少有一辆车可以出行。

样例输入:
8 0 1 2 3 4 5 6 7
8 1 2 3 4 5 6 7 8
8 2 3 4 5 6 7 8 9
8 0 1 2 3 4 5 8 9
8 0 1 2 3 6 7 8 9
8 0 1 4 5 6 7 8 9
8 2 3 4 5 6 7 8 9
样例输出:
5

提示:
一种可能的方案是,选购最后车牌一位数字分别为0,2,4,6,8的5辆车,此时每天都有车辆可以出行。

3. 超辣火锅

题目描述:
小美和她的朋友们共n人决定挑战超辣火锅,以决出最能吃辣的人。他们顺时针围成一圈,假设标号为1到n。从1号开始,每一次从当前的人顺时针数k个,然后这个人吃一口超辣火锅。第i个人对辣椒的耐受值为ai, 意味着当他吃了ai口火锅后将因无法忍受而离席(每次数k个人时,离席的人不算入其中,详见样例解释)。请你依次输出离席的人的编号。

输入描述:
第一行读入用空格隔开的两个正整数n,k。
第二行读入用空格隔开的n个正整数ai。

输出描述:
一行输出用空格隔开的n个正整数,表示按时间从早到晚离席的人的编号。

样例输入:
5 2
1 4 2 9 4
样例输出:
1 3 5 4 2

提示:
第1轮,1号吃火锅,剩余0耐受;1号离席,剩余2,3,4,5号。
第2轮,3号吃火锅,剩余1耐受。
第3轮,5号吃火锅,剩余3耐受。
第4轮,3号吃火锅,剩余0耐受;3号离席,剩余2,4,5号。
第5轮,5号吃火锅,剩余2耐受。
第6轮,4号吃火锅,剩余8耐受。
第7轮,2号吃火锅,剩余3耐受。
第8轮,5号吃火锅,剩余1耐受。
第9轮,4号吃火锅,剩余7耐受。
第10轮,2号吃火锅,剩余2耐受。
第11轮,5号吃火锅,剩余0耐受;5号离席,剩余2,4号。
接下来7轮,4号连续吃7口火锅并离席,剩余2号。
接下来2轮,2号连续吃2口火锅并离席,比赛结束。
因此答案为 1 3 5 4 2。

4. 磁盘调度

题目描述:
小美最近学习了操作系统课程,其中讲到了计算机在处理磁盘读取请求时的一系列调度策略。小美对其中最短服务时间优先(SSTF)算法非常感兴趣。假设每个磁盘有多个磁道和一个磁头,当一个请求到达时,其指定需要读取的磁道号,磁头移动到对应磁道上后即可读出该磁道上的内容。SSTF的执行过程如下:
每执行完一次磁盘读取后(读取时间忽略),检查当前时刻及其之前到达的所有请求,服务距离当前磁道最近的请求。
当有多个磁头距离当前值较近时,服务磁道号较小的请求。
若当前时刻及其之前到达的所有请求都已经处理,磁头停留不动,等待下一个请求到来。
现在给出0时刻磁头位置、磁头移动速度以及随后的一系列请求,给出SSTF调度算法下磁头将要移动的总磁道数。

输入描述:
第一行输入三个正整数n,m,k,表示磁盘请求次数为n,磁头每移动1个磁道花费的时间为m,磁头初始所在磁道号是k。
第二行输入n个正整数ai,表示第i次请求的磁道号。
第三行输入n个正整数ti,表示第i次请求的到达时间,不保证该序列递增。

输出描述:
一行,输出一个整数,表示磁头移动的总磁道数。

样例输入:
5 2 4
4 8 9 8 10
12 14 4 17 8
样例输出:
14

提示:
0时刻没有待处理请求,磁头停止。
4时刻3号请求到达,从4号磁道移动到9号磁道。
14时刻移动完毕,1,2,5号请求待处理,移动到8号磁道。
16时刻移动完毕,1,5号请求待处理,移动到10号磁道。
20时刻移动完毕,1,4号请求待处理,移动到8号磁道。
24时刻移动完毕,1号请求待处理,移动到4号磁道。
32时刻移动完毕,没有待处理请求,磁头停止。
总共移动长度为5+1+2+2+4=14个磁道。

5. 赛车

题目描述:
大富翁小美是一个赛车爱好者,她举办了世界上最著名的赛车比赛——“小美杯”,“小美杯”比赛分为m场初赛和1场决赛,其中决赛的发车顺位由初赛排名决定。
本届“小美杯”共有n名选手参赛,编号为1~n。目前初赛刚刚结束,请你根据每场初赛各个选手的用时数据,计算出决赛的发车顺位,排名的标准如下:
平均用时短者顺位靠前
平均用时相同时,用时标准差小的选手顺位靠前
平均用时和用时标准差都相同时,编号较小的选手顺位靠前
计算N个数的均值和标准差的公式为:

输入描述:
第一行两个用空格隔开的正整数n,m。
接下来m行,每行n个用空格隔开的正整数aij,表示在第 i 场比赛,第 j 位选手用时位ai。
对于所有数据,2<=n<=50000, 2<=m<=10, 1<=ai<=10^7。

输出描述:
一行输出n个用空格隔开的正整数,表示决赛发车顺位。

样例输入:
5 2
1 2 3 4 4
5 4 3 2 1
样例输出:
5 3 2 4 1

提示:
5号选手两次比赛分别用时4和1,平均用时为2.5,其余选手平均用时为3,因此5号选手最靠前;3号选手两次比赛用时均为3,标准差为0最小,排第二,1号选手标准差为最大,排最后;2号和4号选手用时标准差均为 因此2号选手排第三,4号排第四。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注