————字符串————
hanyuweining
明日はきっと 明日はきっと 仆が世界の中心なので
展开
-
BZOJ3238 [Ahoi2013]差异
传送门裸的SA?SA求出来然后单调栈+height搞一搞就好了啊qwq话说,为什么我这玩意自闭了啊吸氧就能过 不吸就挂QAQ好像是longlong强转出问题了emm不管了我自闭了。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>...原创 2018-12-12 22:40:30 · 138 阅读 · 0 评论 -
UOJ131 [NOI2015] 品酒大会
考前挣扎(bu shi之前留下来的坑首先注意到 SAM的parent树 是反串的后缀树 也就是原串的前缀树这个性质很重要 所以说我们在树上统计的时候两个点的lca就是两个后缀串的lcp 于是可以替代后缀数组(嘿嘿嘿然后嘞我们树形dp 统计的size就是以这个串为前缀的子串个数然后我们通过差分【最后后缀和 来进行统计对数树形dp维护mn mx来进行查询最大 【有负所以要维护m...原创 2019-01-18 11:28:13 · 142 阅读 · 0 评论 -
BZOJ3160 万径人踪灭
传送门FFT好题~我们观察一波性质 首先 回文的子序列一定是 j+k=i 其中j和k分别是两个下标 然后i是固定的这玩意看起来是不是就很像卷积= =+我们要求的是f[i]就是固定值是i的时候两侧的相同字符对数然后呢 我们分别把a和b做一遍a就是把一个位置上是a的赋成1然后FFT自乘 b同理a,b对应系数相加就得到了f[i]求答案就是枚举所有i求2^f[i]-1但...原创 2018-12-24 19:58:07 · 113 阅读 · 0 评论 -
BZOJ 4516 [Sdoi2016] 生成魔咒
传送门心态崩了++后缀自动机板子题[考场上要是不会后缀自动机就崩了T^T]可以看出 每次答案的贡献就是和原来本质不同的子串数量根据SPOJ7258我们可以得到 本质不同的子串数量可以通过建出自动机 树形dp解决我们需要知道的就是 连向它的那个链就是我们建立自动机的时候的那个找的p直接求一下就好了另外的理解方式就是我们要求本质不同的前缀数量 那么就是parent树上l...原创 2018-12-18 15:36:20 · 110 阅读 · 0 评论 -
SPOJ7258 SUBLEX - Lexicographical Substring Search
传送门[洛谷]心态崩了我有妹子靠 我写的记忆化搜索 莫名WA了 然后心态崩了当我正要改成bfs排序的时候 我灵光一动 md我写的i=0;i<25;i++???然后 改过来就A掉了T^T大体做法就是 一个点出发的本质不同子串数量应该是就是所有添加字符的转移和其余选一个空串的转移所以直接建出自动机然后 我的做法是直接记忆化搜索就可以省去建树/排序 因为所有子串必定由转移构...原创 2018-12-18 13:20:51 · 165 阅读 · 0 评论 -
SPOJ1812 LCS2 - Longest Common Substring II
传送门[洛谷]多个串!1811的升级版~其实做法很相似 我们只需要对第一个串建立SAM然后 每个串在上面跑 由于是求所有字符串交的LCS我们只需要记录每个节点与当前串匹配的max和之前所有串匹配的minmax是需要子树更新的 min要记得和当前的max还有len[节点最大长度]取min然后这样就做完啦。(才不会说我读的是所有字符串并的LCS 这个的做法可以直接跑一个然后...原创 2018-12-18 09:49:15 · 165 阅读 · 0 评论 -
SPOJ1811 LCS - Longest Common Substring
传送门[洛谷]SAM板子题?(可惜我还是不会)大概就是能匹配就一直往下匹配不能匹配就跳parent 调到能匹配为止 跳到根了就重新开始最开始太蠢了非要写递归版 写着写着发现不知道我要写啥了T^T 果断换循环。。#include<cstdio>#include<cstring>#include<algorithm>#include<...原创 2018-12-18 08:04:54 · 255 阅读 · 0 评论 -
SPOJ8222 NSUBSTR - Substrings
传送门[洛谷]SAM模板题 可惜我不会本来想大力上线段树的然后发现题解的做法非常精妙因为 很显然长度为i的字符串出现长度一定>=长度为i+1的字符串[作为子串出现就可以取到=]那么直接记录最后倒着更新一遍就可以啦附代码。#include<cstdio>#include<cstring>#include<algorithm...原创 2018-12-17 19:36:50 · 83 阅读 · 0 评论 -
洛谷3804 【模板】后缀自动机
传送门真·玄学还是没有完全搞懂SAM的性质啥的啊T^T我本来以为SAM会很长的没想到这么短 这个题就是建出SAM 然后建树求出right然后*len[max]直接取max即可啦学习笔记什么的等等吧[鸽了我也不管]附代码。#include<cstdio>#include<cstring>#include<algorithm>...原创 2018-12-17 16:29:25 · 206 阅读 · 0 评论 -
BZOJ5261 Rhyme
传送门广义后缀自动机= =+跟ptx大爷的博客学的 戳我传送我写的第一种 建立Trie树的写法 bfs建立SAM为什么是bfs呢 我也不知道(GG) 经过我一番抱大腿+询问 各位大爷说的原因是 因为dfs时间复杂度不对多有道理哦 【摔不过好像这个复杂度保证好像真的不大准确2333所以 安安心心bfs就最吼啦 复杂度貌似是trie的大小其实 每次重置last为rt也可...原创 2018-12-22 12:07:30 · 167 阅读 · 0 评论 -
BZOJ4698 Sdoi2008 Sandy的卡片
传送门转化题意可以得到 我们求得就是 所有串的差分串的LCSSAM水过就好啦#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<map>#define inf 20021225#define ll long lon...原创 2018-12-21 11:16:08 · 113 阅读 · 1 评论 -
BZOJ1396 识别子串
传送门拼命给自己拉低AC率(SAM 一发入魂很明显 我们要查的就是 叶子结点叶子结点 的 len 和 其父亲的 len 会影响一段区间大概长这个样子 前面一段倾斜的 就是 len 在不断增长 后面的要取min所以就是平直的[你可能需要意会一下]因为一个点的len是一段连续的区间 你从这个图里就可以看的比较清楚了qwq然后我们 就重锤李超树 咳咳咳才不要李超树呢 ...原创 2018-12-21 08:57:15 · 171 阅读 · 0 评论 -
BZOJ3926 诸神眷顾的幻想乡
传送门树上SAM!显然如果树上一条一条字符串放的话那么是n^2的w但是 题目的性质非常吼啊!20个叶子节点 我们就可以 把所有叶子结点拎出来当根 全部扔到一个SAM里 就吼啦最后的答案是 因为自动机上一个节点的贡献就是这么多啦自动机啥的代码真的好写呢[FLAG](机房好冷啊)附代码。 #include<cstdio>#include<...原创 2018-12-20 20:10:19 · 158 阅读 · 0 评论 -
BZOJ4259 残缺的字符串
没有传送门 = =跟上一个题一样 请戳链接唯一的变化就是柿子稍微一改然后没啥了注意翻转的位置要改。。。所以不如翻那个不需要改的= =+#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#d...原创 2018-12-26 16:01:49 · 270 阅读 · 0 评论 -
BZOJ4503 两个串
没有传送门 因为是权限题 =.=利用卷积来做字符串匹配问题= =+如果我们现在有两个串 单纯要匹配它们我们可以怎么做呢?很明显是不可以的因为可能出现这种情况aabbbbaa两个部分抵消掉了=.=我们如何处理这样的问题呢?平方!这样子就好多了qwq然后我们来处理通配符 通配符设为0然后乘上去就可以啦qwq是不是非常优秀 = =+然后我们回归原题...原创 2018-12-26 15:36:10 · 156 阅读 · 0 评论 -
BZOJ 2565 最长回文串
传送门回文自动机!正着跑一遍 记录以每个点作为回文子串的右端点的最大长度倒过来跑一遍 记录每个点作为左端点的最大长度求个和就好啦附代码。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define inf 20021225#de...原创 2018-12-20 15:05:20 · 98 阅读 · 0 评论 -
BZOJ3676 [Apio2014]回文串
传送门回文自动机板子题~回文自动机和ACA以及SAM都是很类似的[毕竟都是自动机吗233]回文自动机的树形结构是 fail指针构成的用增量法 构造即可(其实我也没完全学懂呢T^T)#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#d...原创 2018-12-20 13:56:25 · 117 阅读 · 0 评论 -
BZOJ2555 Substring
传送门样例毒瘤 强制在线毒瘤(做法比较显然啦 我们需要维护一个SAM 并资磁查询子树大小由于强制在线 所以就需要LCT咯查询子树大小我们可以变成链加+单点查询然后匹配过程就和ACA的跳跳跳一样啦 decode这个地方真的坑 mask要设局部变量附代码。#include<cstdio>#include<cstring>#include&l...原创 2018-12-20 08:54:26 · 125 阅读 · 0 评论 -
BZOJ1030 [JSOI2007] 文本生成器
我再看错模数我就是呆头考虑包含任意的补集不包含任何然后典型的AC自动机上dp 长度为l不能走到任何关键点特么模数多写了个0 问题是我刚跟zyf吐槽了模数就当考前提醒了= =//Love and Freedom.#include<cstdio>#include<cstring>#include<algorithm>#include&l...原创 2019-01-19 21:03:33 · 163 阅读 · 0 评论