学习记录
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 · 219 阅读 · 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+2018=24+2118=2^4+2^118=24+2120=24+2220=2^4+2^220=24+22样例输入15 2022输出3数位DPK个互不原创 2020-11-09 18:56:56 · 138 阅读 · 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≤10002.1≤N≤1000001≤N≤1000001≤N≤100000样例:Input:73 1 2 1 8 5 6output:4一.1≤N≤1000对序列中一个的数a[i]来说,我们定义dp[ i ] 表示以a[i]这个数结尾的最长上升子序列的原创 2020-11-09 18:51:42 · 119 阅读 · 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 · 75 阅读 · 0 评论 -
博客迁移
将简书的一些博客迁移到这里来,这里贴出一些网址:1.我的简书2.我的个人博客Moon_Light3.我的githubXudong原创 2020-11-08 16:49:02 · 53 阅读 · 0 评论