摘要: 定义 所谓笛卡尔树,就是将给定的$n$个二元组$(key,val)$建成一棵树。使得如果只关注$key$,那么这是一个堆。如果只关注$val$,那么这是一棵二叉搜索树。 有没有很像$treap$。 与$treap$不同的是,笛卡尔树是可以在$O(n)$时间内构建的。而且如果给定key,那么$trea 阅读全文
posted @ 2019-06-05 22:07 wxyww 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 用$f(i,j)$表示前i个元素,以i为右端点,j为左端点时的答案。 用个"区间修改,单点查询"的线段树维护出第二维。在从左往右枚举i的过程中。将$[lst_i+1,i]$的答案+1.将$[lst_{lst_i}+1,lst_i]$的答案 1。 代码 cpp / @Author: w 阅读全文
posted @ 2019-06-05 11:51 wxyww 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题意 给出一棵树,每条边有边权。求$\sum\limits_{i=1}^n{f(i,j)}$,$f(i,j)$表示从i到j路径的异或和。 思路 $g_i$表示从根到$i$的异或和,两点之间的路径异或和就可以用$g_i \otimes g_j$表示。 先然$g_i$可以一次$dfs$求出来。 阅读全文
posted @ 2019-06-05 08:46 wxyww 阅读(232) 评论(0) 推荐(0) 编辑