摘要:
SP10628 COT - Count on a tree 给定一棵有 \(n\) 个节点的数,每个点有权值,每次操作输出节点 \(u,v\) 之间的第 \(k\) 小值。 因为有静态区间第 \(k\) 小,所以考虑主席树。 因为题目要求在树上操作,所以考虑树上差分。 建树的过程就是跑一个 dfs, 阅读全文
摘要:
乘法逆元和求法 基本的数论知识,有必要补一发。 开始之前 模运算:取余运算,比如 \(a \bmod b\) 就是 \(a\) 除以 \(b\) 得到的余数。 性质:在加、减、乘、乘方的运算过程中,进行取余运算,不会对结果产生影响。 优先级:取余运算的优先级和乘法、除法的优先级相同,高于加减法的优先 阅读全文
摘要:
dfs 序 就是按照 dfs 的顺序遍历整棵树的时候再加一个数组记录经过的编号就行了。 #include <bits/stdc++.h> #define V e[i].v using namespace std;int rd(){ int w=0,v=1;char c=getchar();while 阅读全文
摘要:
CF159D Palindrome pairs 给定一个长度为 \(n\) 的字符串 \(S\),求有多少四元组 \(l_1,r_1,l_2,r_2\) 满足 \(1 \le l_1 \le r_1 < l_2 \le r_2 \le n\) 且 \(S \left[ l_1 \dots r_1 \ 阅读全文
摘要:
可持久化并查集 模板 Luogu P3402 可持久化并查集' 可持久化并查集支持三个操作: 回到某个历史版本(可持久化)。 合并两个集合(并查集)。 查询两个元素是否在同一个集合中(并查集)。 思路 很明显,对于第一个操作,就用主席树实现,也就是把当前版本的根节点设成要求版本的根节点就行了。 至于 阅读全文
摘要:
主席树 主席树是由一位巨佬 hjt 发明的,所以叫主席树。 什么是主席树 主席树,又名可持久化权值线段树。所以,主席树 \(\in\) 可持久化线段树 至于可持久化的定义,简单来说就是可以访问到之前某个时刻的数据。 比如\(\color{Blue}{模板题1}\)中的要求:求单点历史值,修改某历史版 阅读全文
摘要:
并查集 突然发现不会并查集的按秩合并 只能爬回来补了。 UPD:2022/4/7 突然发现学的按秩合并是假的,实际上是启发式合并…… 所以回来修锅。 定义 并查集是一种用于处理一些不相交的集合的合并与查询问题的树形数据结构 能够将两个集合合并 或者查询某个元素处于哪个集合中 用法 预处理 并查集维护 阅读全文
摘要:
权值线段树 就是以下标为值域的一棵线段树。 定义 引用一下这篇日报中的例子: 假设用权值线段树维护一个数组: \(\left\{ 1,1,2,2,2,3,4,5,6,7,8 \right\}\) 初始权值线段树时所有节点为 0 插入数组中的 1 后 插入数组中的 2 后 全部插入后 时间复杂度 因为 阅读全文
摘要:
离散化 赶紧胡一篇出来,免得到时候出锅。 毕竟离散化是权值线段树学习的基础。 定义 把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。 \(\qquad \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qqu 阅读全文