关注
更新一下第二题思路:
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)
)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
2024-12-18 19:58
西安交通大学 嵌入式工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的2024牛客高光时刻 #
103099次浏览 1554人参与
# 产品实习,你更倾向大公司or小公司 #
125988次浏览 1696人参与
# 被同事甩锅了怎么办 #
16436次浏览 91人参与
# 产品人求职现状 #
131560次浏览 1519人参与
# 反问环节如何提问 #
73288次浏览 1839人参与
# 科大讯飞求职进展汇总 #
256248次浏览 2580人参与
# 如果有时光机,你最想去到哪个年纪? #
35106次浏览 679人参与
# 你最希望上岸的公司是? #
96333次浏览 535人参与
# 读研or工作,哪个性价比更高? #
21756次浏览 302人参与
# 上班苦还是上学苦呢? #
193446次浏览 1156人参与
# 如何排解工作中的焦虑 #
110240次浏览 1265人参与
# 我是XXX,请攻击我最薄弱的地方 #
8015次浏览 83人参与
# 银行笔面经互助 #
107076次浏览 1025人参与
# 机械人面试中的常问题 #
20254次浏览 253人参与
# bilibili求职进展汇总 #
40260次浏览 428人参与
# 24届的你们现状如何了? #
11978次浏览 87人参与
# 牛友春招想让哪家公司来捞你? #
16216次浏览 102人参与
# 参加过提前批的机械人,你们还参加秋招么 #
70475次浏览 1274人参与
# 非技术岗是怎么找实习的 #
171983次浏览 2234人参与
# 贝壳求职进展汇总 #
13849次浏览 101人参与