随笔分类 -  学习笔记?

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