摘要: 我是 fush,一个很菜的 oier。 这里,我只想分享一些自己的学习记录。 由于本人较菜,有哪里写的不严谨的地方欢迎在评论区指出。 除了下面几个账号(本人的),如果要转载请写明出处,谢谢。 阅读全文
posted @ 2024-12-29 19:14 fush's_blog 阅读(24) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2025-03-08 14:59 fush's_blog 阅读(0) 评论(0) 推荐(0)
摘要: 好吃的序列 这是一道送分题。 在 stl 库里面有个 nth_element 的函数,用来求序列中的第 \(k\) 小。 #include<bits/stdc++.h> using namespace std; int a[N]; int32_t main(){ int n, k, seed; re 阅读全文
posted @ 2025-02-16 17:48 fush's_blog 阅读(68) 评论(0) 推荐(0)
摘要: 简述 我们有这样一个问题:修改点权,询问链上的点权和。这明显是个树链剖分模版。 但如果还有这些操作呢:断开一条边,连上一条边,保证一直是森林。这就是动态树的一种问题。 而 LCT 就是解决这些问题的优秀数据结构。 前言 建议是会 Splay,虽然 FHQ-Treap 也能写,但是多一个 \(\log 阅读全文
posted @ 2025-02-16 16:59 fush's_blog 阅读(23) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2025-01-05 15:22 fush's_blog 阅读(8) 评论(0) 推荐(0)
摘要: 自来水厂到你家的水管网是一个复杂的有向图,每一节水管都有一个最大承载流量。 水厂不放水,你家就断水了。但是就算水厂拼命的往管网里面注水,你家收到的水流量也有上限(毕竟每根水管承载量有限)。 你想知道你能够拿到多少水,这就是一种最大流问题。 阅读全文
posted @ 2025-01-05 13:38 fush's_blog 阅读(43) 评论(2) 推荐(1)
摘要: fhq-treap 又名“无旋 treap”,有着码量小,易理解,可持久化等特点。 阅读全文
posted @ 2024-12-29 19:38 fush's_blog 阅读(21) 评论(0) 推荐(0)
摘要: 更好的阅读体验。 前言 本文的线性基指异或线性基。 由于作者太菜了本文的语言不会特别规范。 简介 线性基简称基,它是一个数的集合,并且每个序列都拥有至少一个线性基。 线性基有三个性质: 线性基中的几个数异或后不能得到 \(0\)。 线性基中的数在异或后能得到原序列中的所有数。 线性基在保证前两个性质 阅读全文
posted @ 2024-12-29 19:38 fush's_blog 阅读(45) 评论(0) 推荐(0)
摘要: 更好的阅读体验? 前言 前置知识: 二叉搜索树 其实 Splay 的实现蛮多的,如果真的要能懂的话建议自己画图理解。 加油。 基础操作 准备操作 我们先把节点要维护的先定义出来。 子树大小 节点的权值 左儿子 右儿子 父亲 size val ch[0] ch[1] fa struct node{in 阅读全文
posted @ 2024-12-29 19:37 fush's_blog 阅读(47) 评论(0) 推荐(0)
摘要: 前言 更好的阅读体验 默认读者会基本的 BST 操作。 节点定义 平衡因子:BF(BalanceFactor),左子树高 \(-\) 右子树高。 平衡树是让树的形态尽可能像完全二叉树,而不是链。 在 AVL 中,我们认为 \(\left|\text{BF}\right|\le 1\),也就是 BF 阅读全文
posted @ 2024-12-29 19:36 fush's_blog 阅读(57) 评论(0) 推荐(0)
摘要: 更好的阅读体验。 定义 BST(二叉搜索树)是一种树形结构,有如下性质。 空树是二叉搜索树。 若左子树非空,那么左子树上所有点的权值均小于其根节点的值。 若左子树非空,那么其右子树上所有点的权值均大于其根节点的值。 二叉搜索树的左右子树均为二叉搜索树。 操作 BST 的单次操作最坏为 \(O(n)\ 阅读全文
posted @ 2024-12-29 19:36 fush's_blog 阅读(143) 评论(0) 推荐(0)
摘要: 前言 更好的阅读体验。 无旋 treap。 默认读者会 BST 的基本操作、堆和旋转。 本文旋转部分和上面那篇文章的相同。 代码中是小根堆。 思想 treap 既是一棵二叉查找树(tree),也是一个二叉堆(heap)。 但是如果这两个数据结构用同一个权值维护,那么这两种数据结构是矛盾的。 所以 t 阅读全文
posted @ 2024-12-29 19:36 fush's_blog 阅读(20) 评论(0) 推荐(0)
摘要: 更好的阅读体验? 前言 默认读者会基本的 BST 操作和旋转操作。 本文旋转部分的代码。 rotate(x) 表示将 \(x\) 节点旋转到其父亲节点的位置。 建议阅读:B 树 红黑树 规则 红黑树的平衡不靠平衡因子实时监测,和 treap 的随机值,或像 splay 的均摊。 红黑树的平衡完全靠自 阅读全文
posted @ 2024-12-29 19:30 fush's_blog 阅读(41) 评论(0) 推荐(0)
摘要: 线段树你肯定会吧,WBLT 就是把线段树和平衡树结合起来了。 阅读全文
posted @ 2024-12-29 19:05 fush's_blog 阅读(71) 评论(0) 推荐(0)
摘要: 前言 默认读者会 BST 的基本操作。 节点定义 替罪羊树采用了懒惰删除的方法,不会立即删除某个点,而是在重构时不放进数组。 struct node{ int ch[2], val; int siz1, siz2, cnt, sum; //扣去懒惰删除的节点数量,没扣去懒惰删除的节点数量,树内相同权 阅读全文
posted @ 2024-12-29 19:04 fush's_blog 阅读(16) 评论(0) 推荐(1)