2023春招算法题汇总(2)
Author:baiyucraft
BLog: baiyucraft’s Home
0312 拼多多 春招实习
第一题:飞机大战
题目
多多最近下载了一款飞机大战的游戏,多多可以通过游戏上的不同发射按键来控制飞机发射子弹:
按下 A
键,飞机会发射出 2
枚子弹,每个子弹会对命中的敌人造成 1
点固定伤害,但不能作用于同个敌人。
按下 B
键,飞机会发射出 1
枚子弹,子弹会对命中的敌人造成巨额伤害并瞬间将其秒杀。
多多是个游戏高手,总是能操控子弹命中想要命中的敌人。这个游戏—共有 T
个关卡,消灭当前关卡全部敌人后,发射出去多余的子弹会消失,游戏会自动进入下一个关卡。
假设每个关卡都会在屏幕中同时出现 N
个敌人,这 N
个敌人所能承受的伤害也已经知道。多多想知道,每个关卡自己最少按几次发射按键就可以将敌人全部消灭?
输入描述
第一行输入一个固定数字 T
()表示关卡的总数量 N
()表示每个关卡出现的敌人数量。
接下来 T
行,每行有 N
个数字 D1, D2, ..... Dn
()分别表示这 N
个敌人所能承受的伤害。
输出描述
结果共有 N
行,每行一个数字,分别表示对于这个关卡,最少按几次发射按键就可以将敌人全部消灭。
示例
1 |
|
代码
每个等级,比较总长度和总数
1 |
|
第一题:飞机大战
题目
又到了团建的时间,多多君负责安排这次的团建活动。
多多君准备了三个活动(分别编号 A
、 B
和 C
),每个活动分别有人数上限以及每个人参加的费用。
参加团建的有 N
个人(分别编号 1~N
),每个人先投票选择若干个意向的活动,最终每个人只能参加其中一个。
多多君收集完投票结果后,发现如何安排成为了大难题:如何在满足所有人的意向的情况下,使得活动的总费用最少。
于是多多君找到了擅长编程的你,希望你能帮助找到个合理的团建计划。
输入描述
第一行,一个整数 N
,代表准备参加活动的人数。()
接下来 N
行,每行一个由 "ABC"
组成的字符串,其中第 i
行表示第 i
个人投票了哪几个活动。
(输入保证字符串非空,且由大写的 "ABC"
字符组成)
最后 3
行,每行两个整数,分别表示三个活动的人数上限以及每个人参加的费用。
(人数上限以及参与活动的费用均为不超过 100
的正整数)
输出描述
输出共 2
行
如果能满足所有人的要求,第一行输出 "YES”
,第二行输出最少的总费用。
如果不能满足所有人的要求,第一行输出 "NO"
,第二行输出最多能满足多少人。
示例
1 |
|
代码
最小费最大流(领悟)
1 |
|
第三题:客流量分析
题目
多多君开了一家自助餐厅,为了更好地管理库存,多多君每天需要对之前的客流量数据进行分析,并根据客流量的平均数和中位数来制定合理的备货策略。
输入描述
第一行一个整数 N
,表示餐厅营业总天数()。
第二行共 N
个整数,分别表示第 i
天的客流量 R
()。
输出描述
输出共两行:
第一行长度为 N
,其中第 i
个值表示前 i
天客流量的平均值,第二行长度为 N
,其中第 i
个值表示前 i
天客流量的中位数。
示例
1 |
|
代码
用堆存储,快速计算中位数
1 |
|