随笔分类 - 数据结构
摘要:分块 分块其实是一种思想,而不是一种数据结构。 分块的基本思想是,通过对数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。 分块的时间复杂度主要取决于分块的块长,一般可以通过均值不等式求出某个问题下的最优块长,以及相对应的时间复杂度。一般来说,我们取块数
阅读全文
摘要:树状数组 树状数组是一种简洁高效的数据结构。它可以优化前缀和和差分操作。 树状数组和线段树具有相似的功能,但他俩毕竟还有一些区别:树状数组能有的操作,线段树一定有;线段树有的操作,树状数组不一定有。但是树状数组的代码要比线段树短,思维更清晰,速度也更快,在解决一些单点修改的问题时,树状数组是不二之选
阅读全文
摘要:"$\large{题目链接}$" $\\$ 题意: 给定一个长度为$n$的正整数序列,定义函数$f_{l,r}$表示在下标在$\left[l,r\right]$的子区间中不同整数的个数。 求:$\sum \limits^{n}_{l=1} \sum \limits ^{n}_{r=l}f\left(
阅读全文
摘要:"$\large{题目链接}$" $\\$ $\Large\textbf{Solution: } \large{考虑主席树。回忆主席树板子是在区间上做的,而这里是一颗树。\\那么沿着之前的思想,每一个节点新建一颗树,那么根据差分的思想,路径上的点即为t_u + t_v t_lca t_{father
阅读全文
摘要:"$\large{题目链接}$" $\\$ $\Large\textbf{Solution: } \large{HH的项链升级版,不过做法差不多。\\设vis_i表示数组中与i颜色相同的前一朵花的位置,我是把询问按右边界排的序,那么问题来了,\\如果一朵花满足 vis[i]真并且vis[vis[i]
阅读全文