随笔分类 -  数据结构——线段树合并

摘要:"原题链接戳这儿" SOLUTION 考虑一种非常$naive$的统计方法,就是对于每一个点$u$,我们维护它能到达的点集$S_u$,最后答案就是$\frac{\sum\limits_{i=1}^{n}|S_i|}{2}$ 也就是说我们可以先树剖一下,对于每一个点都开一棵线段树,每次修改$O(nlo 阅读全文
posted @ 2019-07-04 12:42 dummyummy 阅读(260) 评论(0) 推荐(0)
摘要:题目链接在这里 "洛谷" / "LOJ" 题目大意 有一个串$S$,每次询问给你一个串$T$,两个数$L$和$R$,问你$T$有多少个本质不同的子串不是$S[L,R]$的子串 SOLUTION 如果你做过 "生成魔咒" 和 "CF1037H" ,就会做这道题了 有两个坑点: 1.线段树合并时必须每次 阅读全文
posted @ 2019-06-17 07:49 dummyummy 阅读(281) 评论(0) 推荐(0)
摘要:又是一道$SAM$维护$endpos$集合的题,我直接把 "CF700E" 的板子粘过来了QwQ 思路 如果我们有$[l,r]$对应的$SAM$,只需要在上面贪心就可以了。因为要求的是字典序比$T$大且最小的子串,我们从前到后让尽可能多的位相等,如果再也无法相等了就从后往前找一位变大。 但是每次询问 阅读全文
posted @ 2019-05-28 15:22 dummyummy 阅读(287) 评论(0) 推荐(0)
摘要:"RemoteJudge" 又是一道用线段树合并来维护$endpos$的题,还有一道见我的博客 "CF666E" 思路 先把$SAM$建出来 如果两个相邻的串$s_i$和$s_{i+1}$要满足$s_i$在$s_{i+1}$中至少出现了两次,那么$s_i$显然是$s_{i+1}$对应的结点在$par 阅读全文
posted @ 2019-05-28 09:29 dummyummy 阅读(429) 评论(0) 推荐(0)
摘要:"RemoteJudge" 题目大意 给你一个串$S$以及一个字符串数组$T[1...m]$,$q$次询问,每次问$S$的子串$S[p_l...p_r]$在$T[l...r]$中的哪个串里的出现次数最多,并输出出现次数。 如有多解输出最靠前的那一个。 思路 第一次见到在$parent tree$上线 阅读全文
posted @ 2019-05-27 20:46 dummyummy 阅读(392) 评论(0) 推荐(0)