随笔分类 - 主席树
摘要:调了一下午。。 属实自闭 想法很简单 同Sdoi2016游戏的做法 将路径拆成两条 $u \to lca$,$lca \to v$ 等差数列对 $u \to lca$ 路径上的点 $x$ 的影响为 $a + (dep_{u} dep_{x})\times b$ 可以拆成 $( b) \times d
阅读全文
摘要:可持久化Trie本质和主席树一致 但能支持求最大异或和操作 抛开这个功能测过可持久化trie去写主席树的题,好像也没快多少?可能是我写丑了
阅读全文
摘要:如果知道kruskal重构树这个东西就很简单了。 kruskal重构树就是kruskal的过程中,不直接连 $(u, v)$,而是新建一个节点作为 $u$ 和 $v$ 的父亲,并且边权赋在这个点上 这样就得到一棵二叉树(或者森林) 有大根堆的性质 然后倍增预处理祖先,每次询问就是跑到最高的一个祖先,
阅读全文
摘要:我以为有多组数据,原来第一个数是数据编号,绝了 只有连边操作,启发式合并即可。 然后就是主席树裸题了。 空间要开大一点,因为主席树我不知道怎么回收空间。。
阅读全文
摘要:两种贡献不会同时产生,分开考虑两种贡献 记 $pre_i$ 为 $i$ 之前第一个大于 $a_i$ 的数,$suf_i$ 为 $i$ 之后第一个大于 $a_i$ 的数,可以单调栈预处理出来 对于第一种贡献 1. $i$ 会对 $i + 1$ 产生 $p_1$ 的贡献 2. $i$ 会对 $pre_i
阅读全文
摘要:主席树实现二进制高精度。 #include <bits/stdc++.h> using namespace std; template<typename T> inline void read(T &x) { x = 0; T f = 1; char ch = getchar(); while (c
阅读全文
摘要:[传送门] 先求出SA和height。然后找到 rank[l] 的 height 值。能成为相同子串的就是和rank[l]的lcp不小于 $len$ 的。二分出左右端点之后,主席树求第k小即可。 #include <bits/stdc++.h> const int N = 1e5 + 7; char
阅读全文
摘要:[传送门] 题意就是给一排围栏,每个围栏都有一个高度,查询区间$\left[l, r\right]$之间长度为$w$的子区间的最小高度的最大值。首先,这个最大值肯定是这个区间里的围栏的某个高度,如果是一个未出现过的高度,显然能有更高的高度满足条件。那么就可以考虑在离散化后的高度数组里二分答案,然后c
阅读全文
摘要:[传送门] 很明显,可以转化成求每个点在两棵树中对应的子树中有多少个相同的节点,对答案的贡献就是$C(x, 2)$。关键就是怎么求这个东西。一是,对第一棵树求出dfs序,然后dfs第二棵树,用树状数组维护节点是否遍历到。对应下标就是第一棵树的dfs序,求每个节点递归其子树前后对应子树的区间和,作个差
阅读全文

浙公网安备 33010602011771号