数据结构
文章平均质量分 92
放过@
这个作者很懒,什么都没留下…
展开
-
数据结构——树状数组
树状数组是利用二进制的一些特点来实现的,主要用来查询动态的连续和的问题,修改和查询都是O(log(n))的复杂度,需要O(n)的空间复杂度1.单点修改+区间查询void add(int p, int x){ //给位置p增加x while(p <= n) sum[p] += x, p += p & -p;}int ask(int p){ //求位置p的前缀和 ...原创 2020-02-17 16:17:48 · 210 阅读 · 0 评论 -
数据结构——ST表(RMQ)
ST表类似树状数组、线段树。适用于解决区间最值得查询得算法,预处理O(nlogn),查询上ST表为O(1),而线段树为O(logn)。但是ST表只能除了离线的,不能修改。ST表得构造采用DP的思想。主体为一个二维数组st[][],s[i][j] 表示 [i, i + 2^j - 1]区间的最值。转移方程为:st[i][j] = min(st[i][j-1], st[i+2^(j-1)][j...原创 2020-02-17 15:23:24 · 214 阅读 · 0 评论 -
数据结构——单调栈,单调队列
参考来自:https://endlesslethe.com/monotone-queue-and-stack-tutorial.html#i-2单调栈一个单调递增栈的例子:进栈元素分别为3,4,2,6,4,5,2,3第i步操作结果13进栈323出栈,4进栈432进栈4 242、4出栈,6进栈654进栈6 464出栈,...原创 2020-02-16 10:48:36 · 219 阅读 · 0 评论