关注
由于同时和a[j]和j有关所以不能单纯维护当作斜率相关的问题来做
本问题是经典的决策单调性问题。
考虑我们选择j时如果j1>j2且a[j1]>a[j2]显然j2时候不如j1,因此我们用单调队列筛掉这些不符合条件的j2,最后得到一个单调下降子序列。
同理,选择i时如果i1<i2且a[i1]>a[i2]显然i2时候不如i1,帅选后i的选择区域也将在一个单调上升子序列中。
现在在一个单调上升子序列中选择i,一个单调下降子序列中选择j。
接下来考虑j对i1和i2的值f(i1,j)=(A[i1]+A[j])*(j-i1),f(i2,j)=(A[i2]+A[j])*(j-i2)作差
不妨设i1>i2
f(i1,j)-f(i2,j)=j*(A[i1]-A[i2])-(A[i1]*i1-A[i2]*i2)-A[j]*(i1-i2)
=(A[i1]-A[i2],i1-i2)·(j,-a[j])-(A[i1]*i1-A[i2]*i2)
显然,随着j的增大f(i1,j)-f(i2,j)单调递增,也就是说,对于任意i1,i2存在一个在j0之后
(f(i1,j)-f(i2,j))*(j-j0)>=0
故我们在i待选择的单调上升子序列中的每个相邻元素计算其分界的j即可。具体实现就是用一个单调栈维护每个分界点,每次对相邻两个元素二分其分界点,然后维护单调栈。
1.得到i的候选序列I={i1,i2...ip}
2.得到j的候选序列J={j1,j2...jq}
3.初始单调栈s为空
4.枚举x,根据f(ix,j)-f(ix+1,j)的算出分界点jx,将jx比栈顶元素小,不断把元素踢出,然后加入jx
5.根据单调栈中的元素,得到每个序列J最优的决策ix,计算,并求最大值。
PS:这个问题转化称这样可能更好理解,二维的点集A={(i,a[i])},B={(i,-a[i])},在A中取一个点,在B中取一个点,最后要求其面积最大,当然最后做法本质没区别
查看原帖
3 2
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-04 10:32
安徽大学 单片机 实习僧和BOSS直聘都投了几十家,硬件开发,硬件测试,嵌入式都投了,全是已读不回……我现在考虑想在秋招前速成一个Linux项目,其实现在完全不知道自己要找什么方向的,只能海投了,求大佬们给点意见😭😭😭
西工程小巴:数电课设+数字信号处理课设+微机原理课设?

点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
18957次浏览 464人参与
# 秋招什么时候开投比较合适? #
8309次浏览 169人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
22667次浏览 188人参与
# 实习,不懂就问 #
30797次浏览 530人参与
# 软开人,秋招你打算投哪些公司呢 #
101164次浏览 951人参与
# 如何准备秋招 #
12567次浏览 225人参与
# 运营人求职交流聚集地 #
141210次浏览 989人参与
# 每个月的工资都是怎么分配的? #
15591次浏览 333人参与
# 你觉得现在还能进互联网吗? #
4915次浏览 102人参与
# 预测一下26届秋招形势 #
26615次浏览 248人参与
# 你们公司几号发工资 #
19158次浏览 129人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28240次浏览 456人参与
# 晒一晒你收到的礼盒 #
70322次浏览 403人参与
# 打工人的精神状态 #
54382次浏览 993人参与
# 硬件应届生薪资是否普遍偏低? #
72719次浏览 511人参与
# 高考出分的那一天,我__ #
17347次浏览 269人参与
# 大疆今年的机械笔试难吗? #
41564次浏览 456人参与
# 来聊聊你认为的薪资天花板是哪家? #
31007次浏览 175人参与
# 牛客十周岁生日快乐 #
145277次浏览 1613人参与
# 机械实习一天多少钱合适? #
29064次浏览 177人参与
# 大家实习每天都在干啥 #
82964次浏览 506人参与