关注
更新一下第二题思路:
1. 首先将所有的坐标转为一个三元组(x, y, num)
1. 这里要先剔除掉一些不符合的case:x<start && y>end
2. 依据end来给这一些三元组排序,放入一个最小堆中
3. 遍历[start,end],建立一个数组,dp[i]表示终点到i时能收获到最大利益,并存下收获最大利益情况下车上的剩余座位数,dp[i]={max_profit, res_num}
profit()函数是计算收入的过程,这里省略具体计算公式
1. 假设第一个弹出的是(1,3,1),则dp[3]={profit(1,3,1),2}
2. 假设第二个弹出的是(2,6,2),则dp[6]取 max(max(dp[0]...dp[2])+profit(2,6,2),max(dp[3]...dp[5])), 注意,这里取dp的时候需要满足res_num>=num
3. 假设弹出的有多个,比如又弹了一个(1,6,1), 则再计算一遍max(max(dp[0]...dp[1])+profit(1,6,1),max(dp[2]...dp[5])),取最大值
4. 总结来说,dp的设置方式如下:
vector<pair<int,int>> dp;
// 初始条件
dp[0]=0;
// 设i点max_profit和res_num为dp[i]
dp[i]={max_profit,res_num}
// 下一个点终点为j点 (x_j,y_j,num_j)
dp[j].max_profit=max(
max(dp[0...x_j].max_profit if its res_num >= num_j),
max(dp[x_j+1...y_j-1].max_profit)
)
查看原帖
点赞 评论
相关推荐
查看1道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你的实习产出是真实的还是包装的? #
37183次浏览 438人参与
# 网申一定要掌握的小技巧 #
20637次浏览 86人参与
# 厦门银行科技岗值不值得投 #
16269次浏览 359人参与
# AI替代不了什么? #
602次浏览 17人参与
# 面试紧张时你会有什么表现? #
34925次浏览 223人参与
# 学历VS实习,哪个更重要? #
3263次浏览 71人参与
# 一人一道大厂面试题 #
125150次浏览 1303人参与
# 机械人求职现状 #
39902次浏览 321人参与
# 分享一个让你热爱工作的瞬间 #
67436次浏览 500人参与
# 你的实习什么时候入职 #
367526次浏览 2362人参与
# 汇川技术求职进展汇总 #
189333次浏览 1065人参与
# uu们,春招你还来吗? #
66498次浏览 830人参与
# 面试中,你被问过哪些奇葩问题? #
98030次浏览 1347人参与
# 发工资后,你做的第一件事是什么 #
99827次浏览 320人参与
# 牛油的搬砖plog #
188706次浏览 1254人参与
# 一人分享一道面试手撕题 #
111584次浏览 2646人参与
# 面试被问到不会的问题,你怎么应对? #
28290次浏览 727人参与
# 你都用vibe coding做过什么? #
24549次浏览 926人参与
# 90后北漂现状 #
36200次浏览 214人参与
# 工作上你捅过哪些篓子? #
68675次浏览 318人参与
# 关于春招你都做了哪些准备? #
145379次浏览 767人参与