随笔分类 -  数据结构

摘要:由图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 阅读全文
posted @ 2020-04-10 10:35 dzcixy 阅读(223) 评论(0) 推荐(0)
摘要:$RMQ$又叫$st$表,本质上是一种倍增动态规划,用来求解区间最大值。 通过预处理,快速查询区间最大值。 定义$f[i][j]$表示从$i$开始,区间长度是$2^j$的区间中的最大值是多少。 和$tarjan$的想法一样,以区间的中间点为分界点,可以容易得到递推式$f[i][j] = max(f[ 阅读全文
posted @ 2020-03-31 16:50 dzcixy 阅读(203) 评论(0) 推荐(0)
摘要:acwing 106.动态中位数 https://www.acwing.com/problem/content/108/ 这题可以用两个堆完成,用一个大根堆存储中位数左边的数,用一个小根堆存储中位数右边的数。 因此,我们需要维护两个堆的一个性质: 两个堆的数字数目需要相同(为了方便,将中位数也算在左 阅读全文
posted @ 2020-03-31 16:31 dzcixy 阅读(557) 评论(0) 推荐(0)
摘要:方法: ①单点修改,单点查询 (这个没什么好说的,就是单纯的数组) ②单点修改,区间查询 树状数组:树状数组能单点修改,并且区间1 ~ n的和,区间查询只需要用到前缀和的思想就可以了。 线段树:√ ③区间修改,单点查询 差分:区间修改只需改变两个值,单点查询时求一遍前缀和。 树状数组 + 差分:在进 阅读全文
posted @ 2020-03-25 13:42 dzcixy 阅读(501) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-12-13 19:02 dzcixy 阅读(6) 评论(0) 推荐(1)
摘要:Trie树是一种前缀树,一种高效存储和查询字符串的数据结构,用来处理字符串前缀的出现问题,或者异或对等问题。 例如我们有字符串:abc,ac,ad,ac,ba,bd,bad,cad,cb,da,dab。要在这些字符串中找出ac这个字符串的个数。第一个想法就是暴力搜索,用目标串去和每一个字符串比较,用 阅读全文
posted @ 2019-11-27 23:00 dzcixy 阅读(227) 评论(0) 推荐(1)