hdu2665-主席树

http://acm.hdu.edu.cn/showproblem.php?pid=2665
在这里插入图片描述

题目大意

静态区间第 k 小数
给定一个长度为 n 的序列 A,你需要回答 q 次询问。每次询问给定
l; r; k,你需要回答 A 序列 [l; r] 区间内第 k 小的数字。
n; q ≤ 105; 1 ≤ k ≤ r − l + 1; 1 ≤ l ≤ r ≤ n; jAij ≤ 109

思路

  1. 我们对于每个前缀 i,求出包含 A1; A2; ; Ai 所有元素的权值线段树。
  2. 询问时只需要在线段树上二分最大的位置 v,使得 Al; Al+1; Ar 区间
    内 ≤ v 的个数 ≤ k 即可。
  3. 时间复杂度均为 O((n + q) log n),空间复杂度为 O(n log n)。

solution

  1. 对于每一个时刻,都建一颗线段树,只不过我们可以充分运用之前已有的线段树,我们发现每加一个数,都仅仅只修改了logn个点的信息。所以“ls[y]=ls
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值