1 条题解
-
0
CJBS02|闭区间数量统计 题解
核心算法
用
lower_bound找到第一个不小于 的位置,用upper_bound找到第一个大于 的位置,两位置之差就是答案。思路推导
闭区间左边界要保留等于 的元素,所以找“第一个 ”;右边界要越过所有等于 的元素,所以找“第一个 ”。
正确性说明
设
left是第一个 的下标,right是第一个 的下标。由于数组有序,恰好只有半开区间[left,right)内的元素同时满足 与 ,数量为right-left。复杂度
- 每次询问:;
- 总时间:;
- 额外空间:。
易错点
- 闭区间右端必须使用“第一个大于 ”,不能找第一个不小于 ;
- 区间内可能没有元素,答案应为
0; - 重复值必须全部计入;
- 不要使用 代替
upper_bound,因为这会引入边界溢出风险。
- 1
信息
- ID
- CJBS02
- 时间
- 2000ms
- 内存
- 256MiB
- 标签
- 递交数
- 5
- 已通过
- 2
- 上传者