• 2024-11-02Solution - P9090 「SvR-2」G64
    小爆个标,给出一个\(\mathcal{O}(n+q+\sqrt{x}+\log\operatorname{mod})\)的做法。可能写的有点意识流了,可以结合代码理解或者私信我吧qaq。首先对于最大独立集有DP:设\(f'_{i,0/1}\)表示考虑\(i\)的子树,\(i\)选没选的最大独立集点数。转移就是\(f'_{i,0}
  • 2024-09-11笛卡尔树
    解决的问题有\(n\)个值,每个值有两个信息\((a_i,b_i)\)。你需要在这\(n\)个值间连边并形成一棵二叉树,使得:每个点的\(a_i\)满足二叉搜索树的性质。即对于所有\(v\in\text{subtree}_{lson}\)都有\(a_v\lea_u\),对于所有\(v\in\text{subtree}_{rson}\)都有\(a_v
  • 2024-07-22线段树优化建图一种编号方式的理解
    intid(intl,intr){return(l+r)|(l!=r);}//代码1证明思路:引导并说明某种做法发生冲突的情况,并证明修改后不会发生冲突首先让我们考虑如果为intid(intl,intr){return(l+r);}//代码2会出现什么冲突,如图此时[1,3]与[2,2],[1,5]与[3,3]冲突结论1:线段树中序
  • 2024-04-25笛卡尔树
    笛卡尔树实际上就是对于多个二元组\((k_i,w_i)\)的一棵树,使其所有\(k\)值满足二叉搜索树的性质,且所有\(w\)值都满足小根堆的性质。在构建时,对于右链上的元素,自底向上一定是\(w\)值由小到大的,且一定\(k\)值从小到大。所以我们按\(k\)值从小到大排序,比并按顺序插入右
  • 2024-04-06笛卡尔树
    1定义笛卡尔树是一种二叉树,每一个节点由二元组\((k,w)\)组成。要求\(k\)满足二叉搜索树的性质,\(w\)满足堆的性质。当\(k,w\)都确定,且\(k,w\)互不相同时,笛卡尔树的结构是唯一的,如图:看到这个定义,会发现与Treap十分相似。实际上,Treap就是一种特殊的笛卡尔树。通
  • 2024-02-23笛卡尔树学习笔记
    1.定义笛卡尔树是一种特殊的二叉树,同时满足小根堆和二叉搜索树的性质,笛卡尔树的每个节点有两个值(k,w),k满足二叉搜索树性质,w满足小根堆性质。Treap也是一种笛卡尔树2.性质如果k,w是分别两两不同的,那么笛卡尔树也是唯一的对于一颗笛卡尔树,它的中序遍历是原序列a在原序列中
  • 2024-02-22笛卡尔树
    笛卡尔树定义以一个数列为基础,存储数列中元素,满足两个限制的树。一是数列中元素的下标满足二叉搜索树的性质,二是元素的大小满足堆的性质。建树使用单调栈,在线建树。考虑从左往右在已有的笛卡尔树中添加元素,因为新元素的下标最大,所以只可能取代最右链中的某个元素,并将其收为左
  • 2023-05-25笛卡尔树
    笛卡尔树下文的资料多摘自OIWiki性质笛卡尔树是一种二叉树,每一个节点都由一个键值二元组\((k,w)\)构成。要求\(k\)满足二叉搜索树的性质,而\(w\)满足堆的性质。如果笛卡尔树的\(k\),\(w\)键值确定的话,且\(k\)互不相同,\(w\)互不相同,那么这个笛卡尔树的结构是唯一的。
  • 2023-02-28笛卡尔树
    笛卡尔树总述笛卡尔树是一种二叉树,每一个结点由一个键值二元组\((k,w)\)构成。要求\(k\)满足二叉搜索树的性质,而\(w\)满足堆的性质,如果笛卡尔树的\(k,w\)键值确
  • 2023-01-25笛卡尔树学习笔记
    笛卡尔树下文的资料多摘自OIWiki性质笛卡尔树是一种二叉树,每一个节点都由一个键值二元组\((k,w)\)构成。要求\(k\)满足二叉搜索树的性质,而\(w\)满足堆的性质。如
  • 2023-01-12洛谷 P8077 [WC2022] 序列变换 题解
    题目链接。WC2023之前补一下WC2022的题,参考了官方题解。首先,把括号序列转化为二叉树,\(\texttt{(A)B}\)转为一个点的左子树是\(A\),右子树是\(B\)。相当于括号序列先
  • 2022-11-14笛卡尔树讲解
    前言笛卡尔树算是比较基础的数据结构了,但需要笛卡尔树的题目较少,且很多笛卡尔树的题都可以用其他解法解决,所以这个算法并不算的上热门,然而就在前天晚上,CF1748E这道
  • 2022-10-23笛卡尔树
    笛卡尔树1.权值\(\text{pos}\)满足二叉搜索树的性质,通常用序列的下标作为权值;2.权值\(\text{val}\)满足二叉堆的性质。实现方法我们考虑将元素按照键值\(k\)排序