关注
提供一个E题O(nlogn)的做法。
右边部分就不说了。
左边部分,要查询[1,i]中最右边的值>h的位置。线段树维护最大值,[1,i]在线段树中分成最多logn段。从右到左的扫这些段,如果这个段的最大值<=h,那么整段都不满足,继续下一段。如果这个段的最大值>h,那么答案一定在这个段内,在这个段内继续二分,复杂度也是O(logn),因此总的复杂度是O(nlogn)。
代码:
int ask(int L, int R, int h, int l, int r, int rt) {
if (L <= l && r <= R) {
if (mx[rt].h <= h) return 0;
if (l == r) return l;
int mid = (l+r)/2;
if (mx[rt<<1|1] > h) return ask(L,R,h,mid+1,r,rt<<1|1);
return ask(L,R,h,l,mid,rt<<1);
}
int mid = (l+r)/2, ans = 0;
if (mid < R) ans = ask(L,R,h,mid+1,r,rt<<1|1);
if (ans == 0 && L <= mid) ans = ask(L,R,h,l,mid,rt<<1);
return ans;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
迷茫的大四🐶:搞不好进去还得抓你玩手机呢 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招什么时候投? #
9487次浏览 160人参与
# 今年秋招你收到了多少封邮件? #
37300次浏览 273人参与
# 春节前,你还在投简历吗? #
12913次浏览 148人参与
# 牛友的春节生活 #
6435次浏览 138人参与
# 牛客AI体验站 #
14563次浏览 266人参与
# 春节提前走,你用什么理由请假? #
9146次浏览 216人参与
# 从夯到拉,锐评职场mentor #
4355次浏览 64人参与
# 备战春招/暑实,现在应该做什么? #
4242次浏览 141人参与
# 实习到现在,你最困惑的一个问题 #
4042次浏览 117人参与
# 距离春招还有一个月,你现在是什么开局? #
6131次浏览 109人参与
# AI“智障”时刻 #
25868次浏览 129人参与
# 聊聊Agent开发 #
23333次浏览 575人参与
# 机械人的offer怎么选 #
250298次浏览 1186人参与
# 暑期实习什么时候投? #
6489次浏览 153人参与
# 推荐一个值得做的AI项目 #
6331次浏览 168人参与
# 投格力的你,拿到offer了吗? #
171473次浏览 875人参与
# 非技术2024笔面经 #
465949次浏览 4940人参与
# 实习生应该准时下班吗 #
335691次浏览 1737人参与
# 通信硬件薪资爆料 #
1226435次浏览 7207人参与
# 大家实习每天都在干啥 #
121675次浏览 633人参与