C++模板系列
文章平均质量分 88
ILoveFujibayashiRyou
退役OIer,不定期更新一些数学问题
展开
-
AC自动机学习笔记
前置技能必要前置技能:Trie非必要前置技能:KMP引入问题有nnn个模式串,一个文本串,求有多少个模式串在文本串中出现过。原创 2020-02-20 17:44:19 · 262 阅读 · 0 评论 -
字典树Trie学习笔记
一个简单的问题问题:有nnn个由小写字母组成的字符串(n≤105n\le 10^5n≤105,字符串长度L≤20L\le 20L≤20)。有QQQ组询问(Q≤105Q\le10^5Q≤105),每次给出一个字符串,你需要回答这个字符串在给出的nnn个字符串中是否出现。方法一:暴力,每个询问和前面大莉比较,时间复杂度O(QnL)O(QnL)O(QnL)。方法二:把nnn个字符串存入map中,每...原创 2020-01-21 11:45:13 · 280 阅读 · 0 评论 -
平衡树(splay)学习笔记(详细,从入门到精(bao)通(ling))(持续更新)
前言在前几天军训站军姿的时候胡思乱想,突然明白了splay的本质前置技能——二叉搜索树首先来看一个最简单的问题:你需要维护一个数据结构,资磁这些操作:1.插入一个数2.删除一个数3.查询一个数vvv是否在这个数据结构中显然我们可以用一个桶记录某个数是否出现过,然后每个操作都是O(1)O(1)O(1)的。(不管空间复杂度)但是如果还需要资磁查询某个数的排名的操作,单次复杂度就不是O...原创 2019-11-23 23:21:05 · 486 阅读 · 2 评论 -
KMP&扩展KMP学习笔记(多图预警)
例子:一个文本串A,一个模式串B,A的长度为n,B的长度为m,求B在A中出现的位置。(n,m<=106n,m<=10^6n,m<=106)暴力:枚举文本串中的位置iii,暴力比较A的[i,i+m−1][i,i+m-1][i,i+m−1]这个区间是否与B相同。时间复杂度最坏情况是A,B都只有一种字符(比如A是aaaaa,B是aaa),此时时间复杂度为O(nm)O(nm)O(nm)...原创 2019-10-27 13:53:49 · 598 阅读 · 0 评论 -
FHQ Treap入门教程(含洛谷P3369 & LOJ#104 普通平衡树题解qwq)
前置技能二叉搜索树堆前置技能有旋转treap?不存在的(我到现在仍然不会旋转的treap qwq)Treap简介引用维基百科上一句精辟的话:Treap=Tree+Heap在Treap上需要维护两个值:一个优先级pripripri,一个节点权值valvalval。其中优先级取随机数,满足小根堆的性质。节点权值满足二叉搜索树的性质。即每个节点的pripripri值均小于左、右孩子的pr...原创 2019-09-01 16:30:39 · 329 阅读 · 0 评论 -
震惊!FFT竟然还能这么写?活到这么大没见过这么写FFT的!
模板题洛谷P3803 【模板】多项式乘法(FFT)点值表达大莉模拟的复杂度是O(n2)O(n^2)O(n2)。引入点值表达qwq(这部分摘抄自毒瘤czh的FFT讲稿):1.1.1.例子:A(x)=x2+2x−1A(x)=x^2+2x-1A(x)=x2+2x−1可以被表达为{(0,−1),(1,2),(2,7)}\{(0 , -1), (1 , 2),(2 , 7)\}{(0,−1),(...原创 2019-08-28 21:56:38 · 367 阅读 · 1 评论 -
震惊!LCA竟然还能用这四种方法求?学到了!不看后悔一辈子!
模板题:洛谷P3379倍增(在线)记anc[u][i]anc[u][i]anc[u][i]表示节点uuu向上跳2i2^i2i到达哪个节点,deep[u]deep[u]deep[u]表示uuu的深度。每次向上让u,vu,vu,v跳到同一深度,再向上跳到LCALCALCA。优点:容易理解,容易敲缺点:常数大qwq时间复杂度:预处理O(nlogn)O(nlogn)O(nlogn),查询每次O...原创 2019-08-14 22:20:32 · 258 阅读 · 0 评论 -
2-SAT问题详解
需要点亮的技能:tarjan2-SAT问题简述看这样一个例子:有一天,万恶的czhczhczh出了一道孙题,是XX树套XX树套XX树。(以下为了方便,简称A树、B树、C树)(由于zydzydzyd很菜,所以这些树只能是线段树或平衡树)有以下要求:蒟蒻zydzydzyd :A树是线段树 或 B树是平衡树。巨神mhymhymhy:A树是平衡树 或 C树是线段树。巨神ypyypyy...原创 2019-08-04 16:25:47 · 337 阅读 · 2 评论 -
洛谷P3834 【模板】可持久化线段树1 主席树(珂持久化线段树)
题目链接:传送门思路:构造一棵权值线段树,让其珂持久化(即一棵主席树)。主席树变量:int n,m,a[Size]; //题目给出的输入数据int maxn,b[Size]; //离散化后的数据,maxn表示去重后的数的个数int tot; //当前主席树内共有多少个节点int T[Size]; //T[i]表示第i个历史版本的根节点int ls[Size],rs[Si...原创 2019-07-29 10:07:04 · 2709 阅读 · 0 评论 -
洛谷P3387 tarjan缩点+DP
题目描述给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。tarjan简介强连通分量:有向图中,若任意两节点均能通过若干有向边达到对面,则这个有向图所有节点为强连通分量。例子:环。tarjan算法是用来求强连通分量的算法。该算法把所有经过的节点压入一个栈中,若到达...原创 2018-10-23 16:13:25 · 2676 阅读 · 0 评论 -
震惊!C++用不同的方式输入,时间相差20倍!原因竟然是……
C++ 4种输入方式的快慢原创 2017-12-15 19:51:08 · 2901 阅读 · 1 评论