![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
ZBoWing
这个作者很懒,什么都没留下…
展开
-
【模板】主席树模板
#include<bits/stdc++.h> using namespace std ; const int maxn = 2e5+7 ; int n,m ; int a[maxn],b[maxn],rt[maxn<<5],ndnum ; int lson[maxn<<5],rson[maxn<<5],sum[maxn<<5] ;...原创 2019-10-24 20:01:13 · 141 阅读 · 0 评论 -
线段树
关于对线段树模板的简化: 在刚开始学线段树时,我们学习的是利用完全二叉树的性质来建立子节点:左儿子的节点等于父亲节点序号乘2,右儿子的节点的序号等于左儿子的节点数加1,并且选用结构体的方式来存储信息。大概就是这样一个思路。 由于考虑到结构体引用慢,并且在可持久化线段树(主席树)中,已经不满足完全二叉树的性质,为了统一线段树的写法,建议大家统一使用动态开节点建树的方法。变量名的改变变化不大,列举如下...原创 2019-07-08 19:39:27 · 302 阅读 · 0 评论 -
【题解】【BZOJ2957楼房重建】(线段树)
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)的...原创 2019-08-30 20:43:00 · 194 阅读 · 0 评论 -
【SNOI2017】炸弹(线段树优化建边+Tarjan缩点+拓扑排序)
这道题如果强行爆搜的话时间复杂度应该是N^2的,所以我们要考虑怎么优化。 线段树优化 这就是这道题的主要方法:给一个区间连边而不是区间里的每一个点,这样的话时间复杂度就会降成log的复杂度,变成了nlogn,这个复杂度在我们可接受范围之内。 具体的来讲就是已n+1为线段树的根的编号,开始建立新的节点,如果搜到了叶子节点,它的编号就变成了自己原来的编号,每当要向区间连边时,就从这个区间上的点连接包含...原创 2019-10-05 18:40:43 · 159 阅读 · 0 评论