#技术岗笔试题求解#给定n个关卡,每个关卡要么有boss要么有商人,总共有m种宝石。玩家手里最多只能拿一块宝石。n和m在1e6量级。
boss关输入类似“b 5”,表示打完boss会掉落第5种宝石。
商人关输入类似“m 6 20”,表示商人会以20元的价格收第6种宝石。每位商人只收一种宝石。
问闯完n关后,玩家最多挣多少钱?
样例:
6 2
b 1
b 2
m 2 20
b 2
m 2 20
m 1 30
输出40,表示买卖两次2号宝石,挣40块。
全部评论
直接从后往前扫,记录一下每个宝石可以卖掉的最高价格就行了
点赞 回复 分享
发布于 2023-04-03 11:27 浙江
对于商店的位置i,找最近一个对应宝石的bossj,dp[i]=max(dp[i-1],dp[j]+a[i]),最近对应宝石boss可以通过宝石种类开索引数组二分查找
点赞 回复 分享
发布于 2023-04-01 21:53 江苏
那个岗的题啊?
点赞 回复 分享
发布于 2023-04-01 20:54 山东
思路: 首先,我们需要将输入的关卡信息进行处理,将boss关和商人关分别存储在不同的数组中。对于boss关,我们可以直接记录每个关卡掉落的宝石编号;对于商人关,我们需要记录每个商人收取的宝石编号和价格。 接下来,我们可以使用贪心算法来求解最大收益。具体地,我们可以按照宝石价格从高到低排序,然后依次尝试将每种宝石卖给商人或者留着打boss。如果当前宝石可以卖给某个商人,那么就卖给他,否则就留着打boss。这样做的正确性在于,如果我们将当前宝石留着打boss,那么后面可能会出现更高价值的宝石,而如果我们将当前宝石卖给商人,那么后面可能会出现更高价值的商人。因此,我们应该尽可能地将宝石卖给商人,以获得更高的收益。 具体实现时,我们可以使用一个指针来记录当前需要卖给商人的宝石编号,以及一个变量来记录当前已经获得的收益。对于每个关卡,我们首先判断是否是boss关,如果是,就检查当前关卡掉落的宝石是否等于指针指向的宝石编号,如果是,就将收益加上该宝石的价值,并将指针后移一位。如果不是,就继续下一个关卡。如果指针已经到达了最后一种宝石,那么剩下的所有宝石都应该留着打boss。 代码实现:
点赞 回复 分享
发布于 2023-03-31 12:35 AI生成

相关推荐

想玩飞盘的菠萝蜜在春...:上交✌🏻也拒?
点赞 评论 收藏
分享
头像
11-03 16:48
已编辑
百度_高级研发工程师
事实是检验真理的唯一标准。 无论我们怎么去说,去讲述,去证明,都抵不过一个offer来得实在,无论我们怎么去复现求职中的摸爬滚打、扒皮抽筋、狼狈不堪,都抵不过你在简历写上大厂的名字(外包不算)。 所以在我求职期间,我什么话都不说,什么话都不讲,因为没有意义,虽然我总讲过程才是意义,但只有当你上岸的那一刻,你才有资格回想在水里的挣扎,只有等你出了山,你才知道山的全貌。 我为什么一定要离开华为OD,难道它不稳定吗,不能赚钱吗。为了证明自己,那肯定有的。其实更多的是印证我的认知是否真的正确。 (给不了解我的人交代一下背景,在下双非一本,gap一年,华为OD外包,摸爬滚打4个月,艰难上岸百度正编)一、...
先锋战士:说得很真诚。鄙视链自古有之,学历,家庭背景,财富,权利。从小有之,小学羡慕那些当班委的,中学羡慕那些学生会的,高中羡慕尖子班拿教学金的,大学羡慕高绩点,毕业了羡慕进大厂的。工作了,又羡慕高职级的,再后来又羡慕别人早早结婚的。我想表达的观点很简单,无论是华为od还是百度,都是经历,没有孰高孰低,为了抵达下一个风景,总会付出更多东西,但不就是人生吗?正如登山,每个阶段的山,都要想办法攀登,在博主的文字中,见到了坚持和积极寻找问题解决办法的心态
学历对求职的影响
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务