Sunglassman 的算法竞赛板子整理——数据结构篇
Sunglassman 的算法竞赛板子整理——数据结构篇
懒标记线段树
P3372 【模板】线段树 1
题目描述
如题,已知一个数列 ${a_i}$,你需要进行下面两种操作:
- 将某区间每一个数加上 $k$。
- 求出某区间每一个数的和。
输入格式
第一行包含两个整数 $n, m$,分别表示该数列数字的个数和操作的总个数。
第二行包含 $n$ 个用空格分隔的整数 $a_i$,其中第 $i$ 个数字表示数列第 $i$ 项的初始值。
接下来 $m$ 行每行包含 $3$ 或 $4$ 个整数,表示一个操作,具体如下:
1 x y k:将区间 $[x, y]$ 内每个数加上 $k$。2 x y:输出区间 $[x, y]$ 内每个数的和。
输出格式
输出包含若干行整数,即为所有操作 2 的结果。
输入输出样例 #1
输入 #1
1 | 5 5 |
输出 #1
1 | 11 |
说明/提示
对于 $15%$ 的数据:$n \le 8$,$m \le 10$。
对于 $35%$ 的数据:$n \le {10}^3$,$m \le {10}^4$。
对于 $100%$ 的数据:$1 \le n, m \le {10}^5$,$a_i,k$ 为正数,且任意时刻数列的和不超过 $2\times 10^{18}$。
【样例解释】

1 | int n, m; |
单调栈
1 |
|
三维偏序
P3810 【模板】三维偏序(陌上花开)
题目描述
有 $ n $ 个元素,第 $ i $ 个元素有 $ a_i,b_i,c_i $ 三个属性,设 $ f(i) $ 表示满足 $ a_j \leq a_i $ 且 $ b_j \leq b_i $ 且 $ c_j \leq c_i $ 且 $ j \ne i $ 的 $j$ 的数量。
对于 $ d \in [0, n) $,求 $ f(i) = d $ 的数量。
输入格式
第一行两个整数 $ n,k $,表示元素数量和最大属性值。
接下来 $ n $ 行,每行三个整数 $ a_i ,b_i,c_i $,分别表示三个属性值。
输出格式
$ n $ 行,第 $ d + 1 $ 行表示 $ f(i) = d $ 的 $ i $ 的数量。
输入输出样例 #1
输入 #1
1 | 10 3 |
输出 #1
1 | 3 |
说明/提示
$ 1 \leq n \leq 10^5$,$1 \leq a_i, b_i, c_i \le k \leq 2 \times 10^5 $。
1 | int n, k, m, t, res[N]; |
Trie树
1 |
|
Trie树———最长异或路径
P4551 最长异或路径
题目描述
给定一棵 $n$ 个点的带权树,结点下标从 $1$ 开始到 $n$。求树中所有异或路径的最大值。
异或路径指树上两个结点之间唯一路径上的所有边权的异或值。
输入格式
第一行一个整数 $n$,表示结点数。
接下来 $n-1$ 行,给出 $u,v,w$ ,分别表示树上的 $u$ 点和 $v$ 点有连边,边的权值是 $w$。
输出格式
一行,一个整数表示答案。
输入输出样例 #1
输入 #1
1 | 4 |
输出 #1
1 | 7 |
说明/提示
当两个结点分别是 $1,3$ 时,答案是 $7=3\oplus 4$,取最大值。
数据范围
$1\le n \le 100000;0 < u,v \le n;0 \le w < 2^{31}$。
1 | int n, x, y, z; |
P5854 笛卡尔树
题目描述
给定一个 $1 \sim n$ 的排列 $p$,构建其笛卡尔树。
即构建一棵二叉树,满足:
- 每个节点的编号满足二叉搜索树的性质。
- 节点 $i$ 的权值为 $p_i$,每个节点的权值满足小根堆的性质。
输入格式
第一行一个整数 $n$。
第二行一个排列 $p_{1 \dots n}$。
输出格式
设 $l_i,r_i$ 分别表示节点 $i$ 的左右儿子的编号(若不存在则为 $0$)。
一行两个整数,分别表示 $\operatorname{xor}{i = 1}^n i \times (l_i + 1)$ 和 $\operatorname{xor}{i = 1}^n i \times (r_i + 1)$。
输入输出样例 #1
输入 #1
1 | 5 |
输出 #1
1 | 19 21 |
说明/提示
【样例解释】
| $i$ | $l_i$ | $r_i$ |
|---|---|---|
| $1$ | $0$ | $0$ |
| $2$ | $1$ | $4$ |
| $3$ | $0$ | $0$ |
| $4$ | $3$ | $5$ |
| $5$ | $0$ | $0$ |
$1 \le n \le 10^7$。
1 |
|