= Vain学习(C/C++ acm算法 python Linux Golang)的个人网站 =
Fhq treap
传送门:
学了Fhq Treap之后,我深深的了解到 Fhq Treap的牛逼,因为上一张学了替罪羊平衡树,码量很大,操作繁琐,不支持提取区间信息,虽然简单理解,但是Fhq也很好理解呀,而且码量不大,能快速维护一颗平衡树,支持提取区间信息
Fhq Treap 的骚操作:
替罪羊树模板
以洛谷模板题为例:普通平衡树
这题正解是替罪羊树,呢么什么是替罪羊树?替罪羊树其实就是一颗平衡树,但是我们要如何去维护树的平衡呢?俗话说,暴力即优雅,替罪羊树,是通过重新构造不平衡的子树来进行维护树的平衡的替罪羊树的部分:
Leetcode 切分数组
切分数组:
给定一个整数数组 nums ,小李想将 nums 切割成若干个非空子数组,使得每个子数组最左边的数和最右边的数的最大公约数大于 1 。为了减少他的工作量,请求出最少可以切成多少个子数组。示例 1:输入:nums = [2,3,3,2,3,3]输出:2解释:最优切割为 [2,3,3,2] 和 [3,3] 。第一个子数组头尾数字的最大公约数为 2 ,第二个子数组头尾数字的最大公约数为 3 。示例 2:输入:nums = [2,3,5,7]输出:4解释:只有一种可行的切割:[2], [3], [5], [7]
限制:
可持久化数组
可持久化数组其实就是保存了历史版本的数组。对于历史版本,我们需要开一个rt[ ]来保存,当前版本的根节点,我们通过根节点的索引,可以,找到当前版本的树中,所携带rt[0]-rt[i]这个区间,的任意点的信息。
rt[ ]
rt[0]-rt[i]
浅谈主席树
我学习主席树,其实已经好几个月了,但是一直没有理解透彻,只能看着板子敲,今天有回顾了一下主席树,然后就突然有了新的理解。
线段树实现普通平衡树操作
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:
HDU 3282 动态开点+区间第k小
题意:
给n个数,把这n个数以此插入容器中,当插入的数量是奇数个时输出中位数
ABA的个数
给一个只包含大写字母的字符串,求其中有多少个ABA(不一定连续)举个栗子: ABBBA 这个样例有3个ABA
ABBBA
ABA
O(n)哈希检验求最长回文子串
求最长回文子串,大家公认的算法是Manacher,但是如果我们不想学习Mangacher,又想在 O(n) 的时间复杂度下解决该问题怎么办?
哈希算法可以帮我们做到,而且容易理解,代码还很短
举个栗子现在有字符串 str="cbaaab",我们要求它的回文子串,那么该怎么办呢?这里我们借用Manacher算法里的一个思想,向原字符串里插字符,使得这个字符串为奇数个,这样方便我们统一处理。我们在这个栗子中插入'#'
str="cbaaab"
'#'
我的第一篇博客
hexo init 命令用于初始化本地文件夹为网站的根目录
hexo init
$ hexo init [folder]
folder
Vain