关注
更新一下第二题思路:
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)
)
查看原帖
点赞 评论
相关推荐
09-14 05:15
广东工业大学 Unity3D客户端 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 金融财经春招备战日记 #
30765次浏览 175人参与
# 牛油的搬砖plog #
112972次浏览 833人参与
# 携程求职进展汇总 #
641050次浏览 4661人参与
# 你的实习什么时候入职 #
306871次浏览 2129人参与
# 工作两年想退休了 #
164977次浏览 1435人参与
# 考公VS就业,你怎么选? #
81166次浏览 491人参与
# 深信服秋招来了 #
272887次浏览 2905人参与
# 如果没找到工作,考公是你的退路吗 #
50070次浏览 398人参与
# 大学四年该怎么过,才不算浪费时间? #
13926次浏览 86人参与
# 26届的你,投了哪些公司? #
194900次浏览 1203人参与
# 面试中,你被问过哪些奇葩问题? #
76196次浏览 825人参与
# 基恩士求职进展汇总 #
24649次浏览 135人参与
# 校招入职后的感受 #
380265次浏览 3233人参与
# 网申一定要掌握的小技巧 #
13575次浏览 77人参与
# 如何快速融入团队? #
33886次浏览 280人参与
# 国庆假期,给大脑放个假 #
6344次浏览 58人参与
# 通信硬件人社招/春招/实习投递现状 #
30118次浏览 951人参与
# 校招阶段,学历VS技术哪个更重要? #
47663次浏览 325人参与
# 非技术er求职现状 #
102634次浏览 673人参与
# 听到哪句话就代表面试稳了or挂了? #
216664次浏览 1588人参与
# 互联网行业现在还值得去吗 #
32513次浏览 219人参与
# 大家实习每天都在干啥 #
92844次浏览 521人参与