![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习记录
zxdxz
xdu-预备役程序员。
展开
-
AC自动机学习笔记
先简单复习一下学习AC自动机所需要的前缀知识。 #前缀知识 1-Trie树 字典树,也称Trie树,前缀树,主要用于存储大量的字符串以及查询操作。 对于Trie树,一般有两个操作: 1.insert操作,在Trie树中存储一个字符串 2.query操作,在Trie树中查询一个字符串 举个例子,对于这样几个字符串,{abcde,abcgf,hello,her}我们看他们在Trie树中是如何存储的: 这里需要注意,字符是边,而不是节点,但都是一一对应的 代码 int son[N][26],cnt[N],i原创 2020-11-08 16:51:22 · 228 阅读 · 0 评论 -
数位DP
记录今天在Acwing学习的几道数位Dp题目,整理了思路,方便以后的复习: 1.度的数量 题目描述 求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和。 例如,设 X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 17=24+2017=2^4+2^017=24+20 18=24+2118=2^4+2^118=24+21 20=24+2220=2^4+2^220=24+22 样例 输入 15 20 2 2 输出 3 数位DP K个互不原创 2020-11-09 18:56:56 · 144 阅读 · 0 评论 -
并查集
并查集 对于某些集合问题,涉及到大量查询操作(查询两个元素是否属于同一集合或是查询某一个元素的祖宗节点),如果使用一般的数据结构,时间和空间开销都比较大,而并查集则可以高效地解决这一类问题。 并查集是一种树状数据结构,用来解决集合间的合并以及元素的查询问题,每个集合可以理解为一棵树,不同的集合构成一个森林。 我们来看并查集的一个简单的应用: 1.Acwing836.合并集合 一共有n个数,编号是1~n,最开始每个数各自在一个集合中。 现在要进行m个操作,操作共有两种: 1.“M a b”,将编号为a和b的原创 2020-11-08 16:56:18 · 130 阅读 · 0 评论 -
DP-LIS
写在前面:学DP掌握基础很重要,这里记录一下LIS和LCS,(希望每次在记录时能够收获新的东西 引入问题: 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 N有这两个数据范围: 1.1≤N≤10001≤N≤10001≤N≤1000 2.1≤N≤1000001≤N≤1000001≤N≤100000 样例: Input: 7 3 1 2 1 8 5 6 output: 4 一.1≤N≤1000 对序列中一个的数a[i]来说,我们定义dp[ i ] 表示以a[i]这个数结尾的最长上升子序列的原创 2020-11-09 18:51:42 · 126 阅读 · 0 评论 -
树状数组
复习一下树状数组 树状数组 一种用于处理单点修改和区间查询的数据结构。 树状数组C的定义: C[x] = Sum a[x-lowbit(x)+1,x], 即数组C表示原数组某一区间段的和。 lowbit操作 int lowbit(int x){ return x&-x; } 单点修改 O(logN) 对于树形结构,我们如果修改一个点的话,对于他祖宗节点的影响是单一的,即我们可以通过一层一层向上更新包含这个节点的所有C数组的值。 int update(int u,int x){原创 2020-11-09 18:48:33 · 76 阅读 · 0 评论 -
博客迁移
将简书的一些博客迁移到这里来,这里贴出一些网址: 1.我的简书 2.我的个人博客Moon_Light 3.我的githubXudong原创 2020-11-08 16:49:02 · 56 阅读 · 0 评论