随笔分类 - DS
摘要:我真能一天看完这么多题吗。 好吧,没能看完,到时候再补。 CF464E dijkstra 时要维护比大小和加法,考虑所有边长均为 \(2^w\),因此我们用主席树维护每个点的二进制边权。 比大小简单,线段树二分出 lcp 即可。 加法的形式为将一段 \(1\) 置为 \(0\),以及将一个 \(0\
阅读全文
摘要:好难啊。 题目的结构比较诡异,但仔细看看会发现就是求所有区间的最大可空前缀和加上最大可空子段和。 如果出现前缀和与子段和相交的情况,设前缀和为 \([1, x]\),子段和为 \([l, r]\),则 \(l \in [1, x]\)。 那么考虑 \((x, r]\) 这一段,如果 \(S_r -
阅读全文
摘要:本文前半部分多为对于吉如一老师集训队论文的学习,后半部分简单介绍了关于一类矩阵处理区间历史最值的方法。 一些铺垫。 定义幺半群,就是 \((S, *)\) 满足结合律并且存在单位元,线段树维护的信息需要是幺半群信息。这里需要单位元是因为初始应该被赋值成单位元。 懒标记同样也要是幺半群,并且懒标记操作
阅读全文
摘要:P10061 [SNOI2024] 矩阵 由于旋转后矩阵内部的相对位置不变,所以只需要将外围的两圈共八行维护一下相对位置即可,使用十字链表维护,然后是大模拟。 我还是头一次使用指针写链表。 const int N = 3010, Mod1 = 998244353, Mod2 = 1e9 + 7; i
阅读全文
摘要:胡扯 \(LCT\) 运用实链剖分,对于一个父亲来说,只有一个儿子对应实边,其它的对应虚边,一堆的实边连在一起就变成了实链,我们用 \(Splay\) 维护。 其中实边指的是一条连通父亲儿子的双向边,而虚边则指的是儿子到父亲的单向边。在 \(LCT\) 中,实边组成的实链被 \(Splay\) 储存
阅读全文
摘要:简介 首先要知道 \(KD-Tree\) 是干什么的,它最广泛的用法便是维护 \(k\) 维最近点对(大部分时候是二维)。 先来讲没有插入,直接建树的。 它的每个结点维护这样子的数据,其中 \(lc\) 和 \(rc\) 代表左右儿子,\(v[i]\) 代表第 \(i\) 维当前点的取值,\(L[i
阅读全文
摘要:线段树详介(带lazy) 线段树和树状数组不同,它维护的是一个个子序列。 如上图,对于一个区间 \([l, r]\),它的左儿子就是 \([l, mid]\),右儿子就是 \([mid + 1, r]\),其中 \(mid = \frac{l+r}{2}\)。 我们可以给线段树上的每一个结点编号,假
阅读全文
摘要:普通莫队 详介(P2709 小B的询问) 普通莫队处理问题的前提是问题可以离线,多次区间查询,\(O(n\sqrt m)\) 能过。 我们以 P2709 小B的询问 为例,假设当前区间为 \([l,r]\),答案为 \(ans\),那么 \(r\) 右移一位时,新加入一个数 \(x\),我们只要把
阅读全文
摘要:何为树状数组? 首先,树状数组是用来维护序列的前缀和的。 其次,我们要知道树状数组是如何将大区间拆分成一堆小区间的。 比如 \(7 = 111_{(2)}\),我们可以将其拆分为 \([1,4], [5, 6], [7, 7]\),再比如 \(12 = 1100_{2}\),我们可以将其拆分为 \(
阅读全文

浙公网安备 33010602011771号