c++ - 修改最小堆中的元素并在亚线性时间内重建堆
问题描述
假设我建立了一个最小堆:
std::vector<int> h;
...
std::make_heap(h.begin(), h.end(), std::greater<int>());
然后我修改一个任意堆元素:
h[7] = 0;
在此修改后,堆属性随后被破坏,因此我不能依赖std::heap_push
或std::heap_pop
不再依赖。
我知道我可以再次使用std::make_heap
onh
来重建堆,但这需要线性时间。
有没有办法修改最小堆的元素并在亚线性时间内重建堆?
解决方案
推荐阅读
- php - PayPal Plus API 和 PHP:无法付款
- python - 更改 DataType 时应用日期格式
- oracle-sqldeveloper - SQL Developer 中的不同解释计划与命令解释计划
- python - 无法在 Selenium 上找到永久覆盖的解决方案
- wpf - 使用表达式混合更改 IsEnabled 上的按钮背景
- android - 包含多个布局的工具栏
- java - 覆盖共享首选项中的变量值或创建大量变量?
- python - 使用 Dataflow 进行图像预处理
- javascript - 如何使用正则表达式(JS)解析以下字符串
- python - Graphviz 流程图:SyntaxError 无效语法