上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 33 下一页
摘要: 题目大意:给你三个字符串$A,B,C$,令$L=min(|A|,|B|,|C|)$,对每个$i\in[1,L]$,求出符合$A_{[a,a+i)}=B_{[b,b+i)}=C_{[c,c+i)}$的三元组$(a,b,c)$的个数 题解:先建一棵广义$SAM$,求出每个点可以到达的$A,B,C$的字串 阅读全文
posted @ 2018-12-23 14:52 Memory_of_winter 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你$n$个字符串,对每个字符串求出只在这个字符串中出现的字串的个数 题解:先建广义$SAM$,然后对每个点统计一下它的子树中是不是都是在同一个字符串中的,是的话,就把这个点标成这一个字符串,计算贡献 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-23 12:15 Memory_of_winter 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求一个字符串的第$k$大字串,$t$表示长得一样位置不同的字串是否算多个 题解:$SAM$,先求出每个位置可以到达多少个字串($Right$数组),然后在转移图上$DP$,若$t=1$,初始值赋成$Right$数组大小,否则赋成$1$ 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-23 10:26 Memory_of_winter 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你两个字符串,求从两个字符串中各选择一个字串使得这两个字串相同的方案数。 题解:建广义$SAM$,对每个点求出在第一个串中出现次数和第二个串中出现次数,乘起来就行了 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 19:36 Memory_of_winter 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你一棵$n$个点的树,最多有$20$个叶子节点,问共有几个不同的子串 题解:广义$SAM$,对每个叶子节点深搜一次,每个节点的$lst$设为这个节点当时的父亲,这样就可以时建出来的$SAM$含有所有的字串 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 18:57 Memory_of_winter 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你一个字符串,求其中本质不同的字串的个数 题解:同[洛谷P4070][SDOI2016]生成魔咒,只要最后再输出就行了 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 15:49 Memory_of_winter 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给一个长度为$n$的字符串,求: $$\sum\limits_{1\leqslant i<j\leqslant n}|suf_i|+|suf_j|-2\times lcp(suf_i,suf_j)$$ 题解:建一棵后缀树,这个式子就成了后缀树上所有后缀之间的距离(后缀树可以把字符串反着加入 阅读全文
posted @ 2018-12-22 15:11 Memory_of_winter 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有一个字符串,每次在末尾加入一个字符,问当前共有多少个本质不同的字串 题解:$SAM$,就是问插入这个字符后,多了多少个字串,就是当前这个点的$Right$数组大小。 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-22 13:39 Memory_of_winter 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有一棵$n$个点的树,每个点有一个点权,有三种操作: 题解:树剖,发现换根操作比较困难,可以进行一波分类讨论(下面的$lca$以及子树都是在以$1$为根的情况下(其实任意一个固定的点均可) 然后步骤三的减去$root$所在的子树中的找这棵子树可以用倍增来求 卡点:步骤三中只查询了$x$的子 阅读全文
posted @ 2018-12-21 20:21 Memory_of_winter 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一个长度为$n(n\leqslant5\times10^5)$的数组,有两个操作: 题解:分块,把每个块排个序(可以把数值为第一关键字,位置为第二关键字),整块的加就块上打$tag$,非整块的就暴力重构,查询就在每个块内求这个数出现位置,直接二分查找就行了。设块大小为$S$,修改复杂度$O 阅读全文
posted @ 2018-12-18 10:49 Memory_of_winter 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定长度为$n-1$的数组$g_{[1,n)}$,求$f_{[0,n)}$,要求: $$f_i=\sum_{j=1}^if_{i-j}g_j\\f_0=1$$ 题解:分治$FFT$博客,发现这道题就是求$f*g=f-1$($f-1$就是没有常数项的$f$),改写一下式子:$$f*g\equ 阅读全文
posted @ 2018-12-17 19:42 Memory_of_winter 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定长度为$n-1$的数组$g_{[1,n)}$,求$f_{[0,n)}$,要求: $$f_i=\sum_{j=1}^if_{i-j}g_j\\f_0=1$$ 题解:直接求复杂度是$O(n^2)$,明显不可以通过此题 分治$FFT$,可以用$CDQ$分治,先求出$f_{[l,mid)}$, 阅读全文
posted @ 2018-12-16 20:33 Memory_of_winter 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有一个长度为$n$的$01$串,两个操作: 题解:维护前缀异或和,树状数组即可 卡点:无 C++ Code: 阅读全文
posted @ 2018-12-16 18:29 Memory_of_winter 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有$n(n\leqslant5\times10^5)$个数,$m(m\leqslant5\times10^5)$个询问,每个询问问区间$[l,r]$中众数的出现次数 题解:分块,设块大小为$S$,先可以预处理出两两块之间的众数出现次数,复杂度$O(\Big(\dfrac n S\Big)n 阅读全文
posted @ 2018-12-16 15:41 Memory_of_winter 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你一棵带点权的树,要你求出树上一条链,使得这条链的长度乘上这条链上点权最小值最大 题解:点分,可以求出一个点向下每一条链上最小值以及路径长度,对于一个链的端点,假设到这部分子树的重心距离为$dep$,这条链上最小值为$min$,记录每一个最小值的最长链的长度,可以用树状数组维护最大值(这 阅读全文
posted @ 2018-12-16 15:04 Memory_of_winter 阅读(227) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 33 下一页