关注
更新一下第二题思路:
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)
)
查看原帖
点赞 评论
牛客热帖
更多
正在热议
更多
# 实习简历求拷打 #
4619次浏览 64人参与
# 你会为了工作牺牲生活吗? #
66645次浏览 454人参与
# 秋招被挂春招仍然能投的公司 #
4695次浏览 80人参与
# 考研失败就一定是坏事吗? #
198505次浏览 1352人参与
# 什么是优秀的实习经历 #
6332次浏览 191人参与
# 为了求职,我做过的疯狂伪装 #
75323次浏览 763人参与
# mt对你说过最有启发的一句话 #
28599次浏览 356人参与
# 牛友们,签完三方你在忙什么? #
128527次浏览 981人参与
# 摸鱼被leader发现了怎么办 #
95435次浏览 616人参与
# 巨人网络工作体验 #
71030次浏览 502人参与
# 你今年的保底offer是哪家 #
154122次浏览 668人参与
# 秋招特别不鸣谢 #
13052次浏览 167人参与
# 你投递的公司有几家约面了? #
153696次浏览 990人参与
# 第一次面试 #
1035164次浏览 13679人参与
# 今年秋招你收到了多少封邮件? #
16165次浏览 216人参与
# 工作中遇到的歹人 #
23618次浏览 280人参与
# 选实习,你更看重哪方面? #
10747次浏览 197人参与
# 携程求职进展汇总 #
837392次浏览 5496人参与
# 滴!实习打卡 #
748870次浏览 6762人参与
# 毕业论文进行时 #
20320次浏览 127人参与

