上一页 1 2 3 4 5 6 7 ··· 15 下一页
摘要: "传送门" Link/Cut Tree 板子题。就当存个模板吧。 说一下对 LCT 的简单理解吧,对于一颗树,将其分为多个 splay,每个 splay 之间通过虚边联系,每个 splay 不重叠的维护树的一部分边。通过 access 操作,虚边变实边,实边变虚边,可以构造出一个 splay 维护从 阅读全文
posted @ 2020-04-15 16:22 BakaCirno 阅读(119) 评论(0) 推荐(0) 编辑
摘要: "传送门" 这个题就是求 $n$ 个差分数列的最长公共子串,为啥是差分数列呢,因为如果一个串都加一个数会变成另一个串,那么这两个串的差分数列除了第一项都相等。 所以把 $n$ 个串的差分数列除去第一项后用不同的数间隔然后拼起来,对应位置打上标记记录属于哪个串,然后求后缀数组。 那么如何求 $n$ 个 阅读全文
posted @ 2020-04-14 16:21 BakaCirno 阅读(119) 评论(0) 推荐(0) 编辑
摘要: "传送门" 用后缀数组写这个题太反智了,因为是 $O(n^2)$ 的统计答案,所以要用单调栈来做优化,比广义后缀自动机麻烦太多了,这个题就是广义后缀自动机的板子题。 由此可见后缀数组还是处理单字符串或者处理多字符串的长度问题好用一些,这种处理多字符串的方案统计问题就算了 后缀数组代码 阅读全文
posted @ 2020-04-14 14:06 BakaCirno 阅读(135) 评论(0) 推荐(0) 编辑
摘要: "传送门" 回来复习一下后缀数组,感觉之前不理解的地方突然都能理解了 w using namespace std; const int N=1e5+10; char s[N]; int n,m,sa[N 2],rk[N 2],c[N],tp[N 2],ht[N 2],ans; void getsa( 阅读全文
posted @ 2020-04-14 01:56 BakaCirno 阅读(112) 评论(0) 推荐(0) 编辑
摘要: "传送门" 之前用 FhqTreap 写过,刚刚学了 splay,再用 splay 写一下。 splay 比 FhqTreap 好的地方就是好写一点,但速度丢人。 splay 处理区间问题,就每次将代表 l 1 位置的点甩到根,然后将代表 r+1 的点甩到根的右儿子,那么此时 r+1 的点的左子树就 阅读全文
posted @ 2020-04-13 16:00 BakaCirno 阅读(181) 评论(0) 推荐(0) 编辑
摘要: "传送门" 之前用后缀数组+主席树写过: "之前的版本" 学习了后缀自动机和线段树合并之后再来做一下这道题。 首先对字符串 $s$ 建后缀自动机,记录下每个前缀的 endpos 和前缀在 SAM 上所处的位置。 因为 $s$ 的子串唯一对应 SAM 上的某一点,这个询问相当于问 parent 树上某 阅读全文
posted @ 2020-04-11 15:32 BakaCirno 阅读(148) 评论(0) 推荐(0) 编辑
摘要: "传送门" 之前那道题的数据加强版,用线段树合并卡了很多次都过不去,很伤。 原因还是线段树合并时间常数太大了,这题可以dfs序+树状数组过的,常数就小很多了。 阅读全文
posted @ 2020-04-10 16:54 BakaCirno 阅读(162) 评论(0) 推荐(0) 编辑
摘要: "传送门" 之前用 dsu on tree 搞过一次,这次试着用线段树合并来做,尝试了一下内存回收,基本可以把空间压到 $O(n)$。不错不错。 把询问用向前星来存,速度和空间都比用 vector 存好一些。 这道题的做法也是先把询问离线,然后每个点建以深度为权值的线段树,先 dfs,然后回溯的时候 阅读全文
posted @ 2020-04-10 15:05 BakaCirno 阅读(195) 评论(0) 推荐(0) 编辑
摘要: "传送门" 这道题考察了对线段树合并的理解程度,在合并线段树的过程中就可以计算逆序对。 阅读全文
posted @ 2020-04-10 13:24 BakaCirno 阅读(131) 评论(0) 推荐(0) 编辑
摘要: "传送门" 之前用树上启发式合并做过一次,这次再用线段树合并搞一次。 可以发现线段树合并比启发式合并好写,但是性能是真的不敢恭维。 阅读全文
posted @ 2020-04-10 11:52 BakaCirno 阅读(116) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 15 下一页