c++ - 如何使用段树查找数组中的前 2 个最小整数
问题描述
如何找到前两个最小元素来询问和更新它。
在我看来,我必须使用分段(segment-tree)
解决方案
这可以通过对 RMQ 段树的简单修改来解决
这是 O(N log N) 方法:
- 为给定数组构建段树
- 对于分段树中的每个节点,存储当前范围及其索引的最小值
- 处理类型 1 的查询如下:
- 查找范围 [L,R] 及其索引中的最小值
- 在 [L, found_index-1] 和 [found_index+1, R] 范围内查找最小值
- 对于类型 2 的查询,只需更新段树
推荐阅读
- chisel - Chisel3.2 上的文件导入
- python - 我在冻结用于图像分类的 CNN 模型的图形时遇到问题
- c# - 使用 Identity Server 4 和 Azure AD 进行静默续订
- r - RMarkdown::render 打印文件名但不是 png
- c# - 重构 C# try catch 与服务器异步任务返回的建议
- python - 根据日期时间将不同的数据分配到字段中
- r - 缺少乳胶包时,tinytex 无法写入目录
- visual-c++ - CMake:从定义文件生成导入库
- scons - 使用scons生成latex源文件并编译pdf
- python - PyCharm 2019.3 Python 控制台 - 连接超时