随笔分类 - 数据结构
摘要:由图1,二维前缀和的递推公式是:$s[i][j] = s[i-1][j] + s[i][j-1] -s[i-1][j-1] + a[i][j]$。 由图2,二维前缀和的查询公式是:前缀和 = $s[x_2][y_2] - s[x_1 - 1][y_2] - s[x_2][y_1-1] + s[x_1
阅读全文
摘要:$RMQ$又叫$st$表,本质上是一种倍增动态规划,用来求解区间最大值。 通过预处理,快速查询区间最大值。 定义$f[i][j]$表示从$i$开始,区间长度是$2^j$的区间中的最大值是多少。 和$tarjan$的想法一样,以区间的中间点为分界点,可以容易得到递推式$f[i][j] = max(f[
阅读全文
摘要:acwing 106.动态中位数 https://www.acwing.com/problem/content/108/ 这题可以用两个堆完成,用一个大根堆存储中位数左边的数,用一个小根堆存储中位数右边的数。 因此,我们需要维护两个堆的一个性质: 两个堆的数字数目需要相同(为了方便,将中位数也算在左
阅读全文
摘要:方法: ①单点修改,单点查询 (这个没什么好说的,就是单纯的数组) ②单点修改,区间查询 树状数组:树状数组能单点修改,并且区间1 ~ n的和,区间查询只需要用到前缀和的思想就可以了。 线段树:√ ③区间修改,单点查询 差分:区间修改只需改变两个值,单点查询时求一遍前缀和。 树状数组 + 差分:在进
阅读全文
摘要:Trie树是一种前缀树,一种高效存储和查询字符串的数据结构,用来处理字符串前缀的出现问题,或者异或对等问题。 例如我们有字符串:abc,ac,ad,ac,ba,bd,bad,cad,cb,da,dab。要在这些字符串中找出ac这个字符串的个数。第一个想法就是暴力搜索,用目标串去和每一个字符串比较,用
阅读全文

浙公网安备 33010602011771号