摘要:
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 阅读全文
摘要:
P5768 [CQOI2016]路由表 对于每个字符串,将其转换成二进制串的形式,每 \(8\) 位表示一个数,且每个串都有一个长度数值 \(L_i\),表示需匹配的位数。 给定 \(n\) 次操作, 操作有两种: 插入操作:添加题目给出的掩码长度为 \(L_i\) 的串 \(S\)。 查询操作:询 阅读全文
摘要:
一个巨大的坑 trie 树 用于查找字符的数据结构。 典型的空间换时间。 定义 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大 阅读全文
摘要:
trie 树好题,题面差评。 题意和思路 P3294 [SCOI2016]背单词 给定 \(n\) 个字符串,要求对其进行排序,使得总贡献最小。 假设插入某个排序后编号为 \(x\) 的字符串 \(s\),产生的贡献规则为: 1.如果在 \(s\) 后的字符串中有 \(s\) 的后缀,贡献为 \(n 阅读全文