版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

仓库源文站点原文


title: 「线段树的扩展之浅谈zkw线段树」一文的测试代码与结果更新 tags:


更新的原因主要是笔者觉得以前的码风很乱 QwQ

<!--more-->

测试平台:

所有代码均使用基于freadfwrite的快读快写模板, 并在编译时使用 C++98 标准和 O3 优化

结果 (单位: s):

递归线段树 zkw 线段树 树状数组
1e6(5 组) 0.31803 0.20853 0.17850
5e6(5 组) 2.04103 0.96225 1.45518
1e7(5 组) 6.47973 3.73674 3.76717
2e7(5 组) 14.7163 8.07310 7.91748

可以注意到, 正如 @frankchenfu 在原文评论里所说, 开了 O3 优化后, zkw 线段树得到了更显著的优化, 速度与树状数组更加接近(毕竟依 zkw julao 所说, 二者理论上速度应该差不多)

而且笔者自认为 zkw 线段树更优美, 所以还是推荐各位学习 zkw 线段树 QwQ

测试代码:

  1. 递归线段树:

    <details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:cpp zkw-segment-tree-test2/seg-r.cpp %} </details>
  2. zkw 线段树:

    <details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:cpp zkw-segment-tree-test2/seg-zkw.cpp %} </details>
  3. 树状数组:

    <details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:cpp zkw-segment-tree-test2/bit.cpp %} </details>
  4. 数据生成器:

    <details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:cpp zkw-segment-tree-test2/data_gen.cpp %} </details>

{% post_link zkw-segment-tree 回到原文 %}