数据结构
TieWay59
这个作者很懒,什么都没留下…
展开
-
学习总结丨数据结构丨主席树
预备知识: 首先得明白线段树的基本知识。线段树上每个节点代表了一个区间,左右孩子节点代表被二分的区间。叶子节点记录了需要操作的数组里的每一个元素。配合延迟标记可以快速查找并修改区间信息。 而主席树是一种可持久化线段树,这是为了访问多次更新后之前某个版本的线段树设计的结构,它的优化在于,不记录每个版本完整的线段树,而是记录每次被更新的一条路径(未被更新的节点就用路径节点连回去)这样每次更...原创 2018-08-09 11:56:12 · 204 阅读 · 0 评论 -
2018-09-09 JSK-31460丨CCPC徐州站网赛丨线段树区间和丨我死了
题意: n的数组,q次操作 每次op x y op==1 询问[x,y],求算a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r]a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r]a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r] op==2 修改a[x]成y思路: 看上去是个线段树,仔细一想还真是个线段树。但是线段树维护的是...原创 2018-09-10 21:21:35 · 236 阅读 · 0 评论 -
2018-12-04 pat5-4110丨二分丨树状数组
https://www.nowcoder.com/pat/5/problem/4110题意实现一个栈,在基础功能上,添加一个查找栈中位数的功能。(第(top+1)/2小的那个数)。 思路一开始我想,由于插入的key不大,可以用一个频率数组num[i],记录小于等于i的栈元素有多少个,每次查找第一个大于等于(top+1)/2的num[i]就是所需要的。但是呢,我觉得写二分不是...原创 2018-12-04 20:36:16 · 158 阅读 · 0 评论 -
HDU-6601 三角形 主席树 斐波那契数列
给n个边的长度,询问q次,每次询问回答能构成的三角形的最大周长。n和q都是1e51e51e5的范围。先想想如果就给一个数组求最大周长三角形的做法。容易想到就是排个序,从大到小枚举N-2次,每次检查三条边能不能构成三角形,如果不行,那么最大的那条边就没有其他边可以跟他组了,(其他边都更小)。如果遇到了第一个可行的,那么就是最大周长的三角形的三边了。上面这种算法是O(NlogN)O(Nl...原创 2019-07-24 19:52:51 · 420 阅读 · 0 评论 -
牛客883F - Planting Trees 单调队列双指针
给一个矩阵,求一个范围最大的子矩阵,满足矩阵内元素最大差值不超过m。输出最大的面积。本题卡N3logNN^3logNN3logN的做法卡得严,导致常数稍大也会超时,另外牛客网的测评机性能浮动大,让人很迷惑。首先可以了解一下最大子矩阵的问题。子矩阵问题的模型(尤其是数据范围才几百的),常常要n2n^2n2枚举子矩阵的左右边界,对中间的部分做一些一维的操作。下面的问题是,如何枚举到,确定左右边界...原创 2019-07-26 15:14:21 · 252 阅读 · 0 评论 -
monotonic queue 单调队列
index > Data Structures > monotonic queue引入POJ 2823 - Sliding Window,对一个长度为nnn的数组,求每个长度为k(k<=n)k (k<=n)k(k<=n)的区间的最小值和最大值。暴力for可以想到一个O(NK)O(NK)O(NK)的做法,当然这不是我写这篇文章的目的。队列设定...原创 2019-07-26 16:50:03 · 431 阅读 · 0 评论