数据结构
文章平均质量分 69
数据结构
WQhuanm
获奖项:2023天梯赛三等奖
展开
-
浅谈ST表
st表通过O(nlogn)的预处理,可以实现O(1)查询区间可重复贡献问题(是指对于运算,满足 xx=x,则对应的区间询问就是一个可重复贡献问题。如RMQ区间最值问题)。但是缺点是不支持修改操作。原创 2023-05-18 11:41:34 · 77 阅读 · 0 评论 -
单调栈与单调队列
可以用于维护一个数前/后第一个大于/小于他的数。我们以维护最大值为例。原创 2023-05-11 20:23:39 · 431 阅读 · 0 评论 -
树状数组(区间维护/单点修改/区间最值)
数组数组用于维护区间信息,简洁的几行的代码可以单点操作/区间查询,或者区间操作与单点查询。虽然功能小于线段树,但是在相同功能的实现上,两者复杂度差不多。原创 2023-03-22 23:40:41 · 1197 阅读 · 0 评论 -
权值线段树
权值线段树是用于处理一个一维数组拥有的数字及其数量。通过线段树我们可以快速求取区间数量最多的数字。原创 2023-03-14 20:50:31 · 82 阅读 · 0 评论 -
线段树(维护区间信息)
可以在logN时间内实现区间修改,单点修改,区间查询等操作的工具。原创 2023-02-19 15:15:28 · 537 阅读 · 0 评论 -
并查集(究竟有几个祖先?)
我们先建立一个数组,fa[x],即fa[x]是x的爸爸,(祖先的爸爸是自己,fa[x]=x),然后一个递归函数,find(x),找x祖先,只要fa[x]!=x,(说明fa[x]只是个爸爸,但不是祖先,他也是某人的儿子)我们就一直递归,直到找到祖先。能找到祖先,剩下就很简单了,写一个unit函数,把a,b的祖先合一起(即fa[find(a)]=find(b),我们让本来是祖先的find(a)有了爸爸,即fa[find(a)]不再等于自己了,他的爸爸变成find(b)(b的祖先)原创 2022-10-28 12:16:42 · 160 阅读 · 0 评论