随笔分类 - C++
摘要:线段树维护单调栈/单调递增序列 线段树在维护区间时可以维护一个单调栈。 P4198 楼房重建 题意:维护全局最大上升序列大小。 更新 线段树当前节点存储整个区间的最大值,对于该题,左子树的区间答案可以直接继承,然后用左子树区间的最大值查询右子树的答案并记录在该节点上。 void update(con
阅读全文
摘要:LCT(Link-Cut-Tree) LCT维护一个森林,即把每个节点用splay维护,可以进行许多操作: 查询、修改链上的信息 随意指定原树的根(即换根) 动态连边、删边 合并两棵树、分离一棵树 动态维护连通性 等 主要性质 每一个Splay维护的是一条从上到下按在原树中深度严格递增的路径,且中序
阅读全文
摘要:P3203 弹飞绵羊-分块 观察数据范围,发现可以分块。只需要处理每个点跳出所在块后的位置和次数即可。目的是为了加速查询并降低修改复杂度。 对于修改,重构整个块内信息即可。 时间复杂度正确的一批 具体实现也挺简单。注意重构时从后往前贡献即可。 #include<iostream> #include<
阅读全文
摘要:P4169-CDQ分治/K-D tree(三维偏序)-天使玩偶 这是一篇两种做法都有的题解 题外话 我写吐了…… 本着不看题解的原则,没写(不会)K-D tree,就写了个cdq分治的做法。下面是我的写题步骤: 想着树状数组维护不了区间最值,于是写了线段树,因为一个**的错误调了几个小时; cdq只
阅读全文
摘要:学习自该博客 (dalao讲得真好,我只为了记忆写重点) Splay是一种数据结构,用于在线调整二叉排序树的操作,用于让树平衡(空树或任意节点的左右两个子树的深度差的绝对值不超过1)转换根节点或者其他操作。 二叉排序树,左子树任意一个点的值小于根节点,右子树任意一个点大于根节点的树。很显然,如果你想
阅读全文
摘要:https://blog.csdn.net/duan19920101/article/details/51579136 简单理解就是一个通过映射直接查找的表(散列表),用哈希函数将数据按照其存储特点进行存储。查询效率接近是O(1)的。 存储方式是结合了数组和链表的思想,用链表将存储的数据直接相连,便
阅读全文
摘要:刚开始还觉得有点怪怪的。因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成l,mid和mid+1,r两个区间查找,当节点区间和查找的区间完全吻合时就ok了。 这道题没有修改,连懒标记都不需要,是一道实打实的
阅读全文