关于可持久化线段树和指针

学术版

~~建议开满~~ 大概 32 倍以上吧
by liqingyang @ 2022-05-23 20:36:15


@[liqingyang](/user/272088) thx
by 岂非 @ 2022-05-23 20:38:47


@[岂非](/user/359845) 可持久化线段树维护区间 $[1,n]$ 修改 $m$ 个历史版本,则最大总结点数约为 $$2n+m\times(\lceil\log_2n\rceil+1)$$ 其中加号前一项是 动态开点线段树的结点数,加号后一项是 历史修改所需要的附加结点数。 例如,[P3919 【模板】可持久化线段树 1(可持久化数组)](https://www.luogu.com.cn/problem/P3919)计算出来的上界为 `23000000`(最大的测试点需要开 `22950795` 个结点)。 指针变量的大小是计算机位数(其实是可执行程序的位数)除以 $8$,32 位计算机指针变量 `type*` 是 $4$ 字节,64 位计算机 `type*` 是 $8$ 字节。 洛谷现在评测用的 64 位 GCC,编译出 64 位可执行程序,因而一个指针变量 `type*` 的大小是 8 字节。 现在评测编译 32 位程序比较少了,所以可以认为指针变量就是 8 字节,如果不确定的话可以用 `sizeof` 来判断指针变量的大小。说句闲话:估计这个世纪 128 位计算机是不会走向一般民用领域了,64 位计算机可能是以后至少一世纪内的主流电子计算机。
by Terrible @ 2022-05-23 21:39:03


@[Terrible](/user/195942) tql thx (顺便问问有没有啥动态开点线段树的经典题或者好题推荐一下)
by 岂非 @ 2022-05-23 21:48:40


|