关注
比如,你来到8,已知8的右边最小值是5,如下
…8…5…
你就知道,5这个数是一定要增长到8才行的。5 -> 8,增长3次。
我们用线段树,5…7范围上,都设置成1!注意!不是+1,是线段树里update操作!不是add操作!
表示:
所有的5肯定都要变的(线段树里5位置+1,表示关于5要操作一次)
所有的6肯定都要变的(线段树里6位置+1,表示关于6要操作一次)
所有的7肯定都要变的(线段树里7位置+1,表示关于7要操作一次)
然后,假设你接下来,来到7,7的右边最小值还是5,如下:
…8 7…5…
我们用线段树,5…6范围上,都设置成1!你会发现,其实没啥变化,因为之前5…7范围都已经设置成1了。
这正好是我们要的效果!
然后,假设你接下来,来到9,9的右边最小值还是5,如下:
…8 7 9…5…
我们用线段树,5…8范围上,都设置成1!你会发现,其实只在8位置上变化了,因为之前5…7范围上,都已经设置成1了。
最后你看看线段树里,总体累加和是多少就可以了。
再举个例子:
13 6 30 19
你来到13,发现右边最小值是6,于是线段树6…12范围,都设置成1
你来到6,发现右边最小值>=6,于是线段树什么也不做。
你来到30,发现右边最小值是19,于是线段树19…29范围,都设置成1
你来到19,线段树什么也不做。
最终,线段树里,只有6…12、19…29范围上有1,所以线段树整体累加和是18。就是我们要的答案。
因为值在10^9范围,所以用开点线段树,或者,用线段树离散化处理。都可以。
最小值这个信息可以用预处理数组。
时间复杂度O(N * log N)
查看原帖
1 1
相关推荐
01-18 22:03
曲阜师范大学 后端工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
4112次浏览 85人参与
# 秋招吐槽大会 #
303668次浏览 1520人参与
# 牛客AI体验站 #
15826次浏览 278人参与
# 找工作八股要背到什么程度? #
58489次浏览 734人参与
# 秋招踩过的“雷”,希望你别再踩 #
185850次浏览 1686人参与
# 我们是不是被“优绩主义”绑架了? #
32160次浏览 484人参与
# 工作中的卑微时刻 #
33217次浏览 197人参与
# 如何提高实习转正率? #
86028次浏览 504人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
144964次浏览 878人参与
# 牛友的春节生活 #
13331次浏览 233人参与
# 备战春招/暑实,现在应该做什么? #
8621次浏览 209人参与
# 材料专业哪个方向更好找工作? #
37703次浏览 118人参与
# 多益网络工作体验 #
62983次浏览 304人参与
# 工作压力大怎么缓解 #
146145次浏览 1327人参与
# 找工作中的意难平 #
984279次浏览 6424人参与
# 反问环节如何提问 #
131308次浏览 2699人参与
# 从夯到拉,锐评职场mentor #
8301次浏览 114人参与
# 实习到现在,你最困惑的一个问题 #
7584次浏览 171人参与
# 为了找工作你投递了多少公司? #
103407次浏览 687人参与
# 什么是优秀的实习经历 #
36288次浏览 388人参与
格力公司福利 356人发布