随笔分类 - 学习笔记?
摘要:后缀自动机(Suffix Automaton,简称SAM)。对于一个字符串$S$,对应的后缀自动机是一个最小的确定有限状态自动机(DFA),接受且只接受$S$的后缀。 一、SAM的States 0.定义子串的结束位置集合endpos。对于S的一个子串s,endpos(s)=s在S中所有出现的结束位置
阅读全文
摘要:膜了一天,貌似有一点点感觉了?赶紧记下来,免得又忘了。。 $sa_i$是第$i$个后缀的开头在原串的位置。 $rk_i$是$S_{i...|S|}$这一段后缀的排名。 $ht_i$是排名为$i-1$和$i$的后缀的$Longest \; common \; prefix$(最长公共前缀)。 构建$s
阅读全文
摘要:什么是CDQ分治? 一个最简单的cdq分治的例子就是归并排序求逆序对。 简单的说,cdq分治就是有一系列关于区间$[L,R]$的问题。 1.递归处理$[L,M]$和$[M+1,R]$。 2.计算$[L,M]$对$[M+1,R]$的影响。 1176: [Balkan2007]Mokia 1790: [
阅读全文
摘要:点分治 什么是点分治? 点分治主要用于有关树上路径统计的问题。 怎么点分治? 1,选取一个点,把树变成有根树。为了让递归层数尽可能的小,我们要选取树的重心,即子树大小最大值最小的点。 2,处理联通块中通过根的路径。 3,删除根节点。 4,递归处理子树。 操作 例题们 POJ - 1741 BZOJ
阅读全文
摘要:咱知道,莫队算法可以解决一些序列上区间的问题,但是那个树,它可不是一个序列哟。怎么办呢?不要紧,咱把树拍平,拍成一个序列就行了哟。 怎么拍呢? 记时间$D$,咱进入某一点$u$的时候打一个时间戳$I_u=++D$,出去的时候再打一个时间戳$O_u=++D$。 这样咱就得到了一个长度为$2N$,每个点
阅读全文
摘要:貌似可以解决一些跟异或相关的问题? POJ - 3764 1 #include<vector> 2 #include<cstdio> 3 #include<iostream> 4 #define pb push_back 5 #define nc getchar 6 #define read(x)
阅读全文
摘要:osu on tree? dsu on tree! 这种操作可以在$O(nlogn)$的时间内解决一些无修改子树询问问题。 咱知道把一棵树轻重链剖分后,树的轻链,重链都只有$O(logn)$个。 这个算法就是利用了这一点,递归处理时保留重儿子的信息,轻儿子的则重新计算。 乍一看感觉很暴力,但是实际上
阅读全文

浙公网安备 33010602011771号