摘要:
0. 前言 前置知识:二叉查找树(BST)。 我们知道,BST 是会被恶意数据卡成$O(n^2)$的。(如下图) 树变成了一条链,这很显然不是我们想要的,我们需要找到一种方法来让 BST 保持平衡。 于是我们就有了各式各样的平衡树,而在 OI 中应用最为广泛的就是 Splay 和 fhq_treap 阅读全文
摘要:
(水) 一般来说,我们使用BKDRhash还进行字符串的哈希操作。 具体地,我们将字符串看成一个大进制数,然后取模就行了。 code: int hash(string s) { int ans=0,l=s.length(); for(int i=0;i<l;i++)ans=(ans*base%mod 阅读全文
摘要:
树上的许多问题都可以用dfs序+线段树予以解决。 轻重链剖分是通过优化dfs的顺序,达到优化时间复杂度的目的。 它可以$O(n\log^2n)$支持链上加,链上和还有$O(n\log n)$LCA,子树加,子树和。 前置知识:dfs序,树形dp,线段树,没了。 首先给出一些定义: 重儿子:子树大小最 阅读全文