上一页 1 2 3 4 5 6 7 8 ··· 56 下一页
摘要: 题意:给一个n k的循环字符串可能从任意地方断开,然后m个长度k的字符串,问你能不能用下面的字符串(每个最多用一次)构成上面的字符串,能循环移位 题解:对下面的串建ac自动机,记录字符串最后一个位置,然后把上面的串扩展k个,再在ac自动机上跑确定每个节点能匹配的字符串是谁,然后枚举k个位置作为起点, 阅读全文
posted @ 2019-04-16 12:43 walfy 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个01字符,每次问你前缀的所有本质不同的子串,由摩斯密码组成的方案数和. 题解:离线处理,把字符建sam,通过topo序来dp计算每个节点表示的子串方案数的和.统计答案时,把n个字符挨个匹配过去,把所有经过的节点加上方案数,还有每个节点的fa链,也要统计(因为是当前串的后缀),用一个vi 阅读全文
posted @ 2019-04-16 10:56 walfy 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个数组,每次会删去连续重复两次的左侧部分及前面,有多个重复部分找长度最小和最靠左的部分,重复的数字最多10次 题解:根据重复数字只有10次,我们离散化后,以每两个相同数字作为起点能确定这重复的部分,一共10 n对,接下来问题就是判断这两部分是不是相同的,建sa用st表求lcp即可,然后对所 阅读全文
posted @ 2019-04-15 17:07 walfy 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题意:定义一个串合法,在n个串中出现次数在li到ri中.问s的所有本质的子串有是多少合法的 题解:把所有串用分隔符分开建sam,记录一个该节点对应每个串的出现次数,topo排序后,当该节点s出现次数不为0,而且其他串出现次数满足条件,那么该节点对应的所有子串都满足条件(因为后缀相同,在同一个串中出现 阅读全文
posted @ 2019-04-15 14:58 walfy 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个字符串,找第k大的子字符串.(考虑相同的字符串) 题解:建sam,先预处理出每个节点的出现次数,然后处理出每个节点下面的出现次数,然后在dfs时判断一下往哪边走即可,注意一下num会爆int // pragma GCC optimize(2) // pragma GCC optimiz 阅读全文
posted @ 2019-04-14 17:02 walfy 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题意:要求维护两端加点的字符串,以及查询本质回文串个数和所有回文串个数 题解:pam,两端加点过程详见ioi2017国家集训队论文,维护一个最长回文前缀和最长回文后缀即可,fail不用两个,能前后共用一个.维护所有回文串个数,就是用增量法,每加一个点计算含这个点的回文串的个数(即当前回文后缀),即f 阅读全文
posted @ 2019-04-14 13:17 walfy 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个子串,m次询问,每次给你abcd,问你子串sa b的所有子串和子串sc d的最长公共前缀是多长 题解:首先要求两个子串的最长公共前缀就是把反过来插入变成最长公共后缀,两个节点在parent树上的lca就是最长公共后缀.找到某个子串就是在parent树上倍增 我们先二分答案,问题就变成了 阅读全文
posted @ 2019-04-12 09:31 walfy 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个初始串s,和m个模式串,q次查询每次问你第l到第r个模式串中包含$s_l s_r$子串的最大数量是多少 题解:把初始串和模式串用分隔符间隔然后建sam,我们需要找到在sam中表示$s_l s_r$子串的状态节点(先找到$s_r$对应的节点,然后倍增parent树即可),我们需要找到包含$ 阅读全文
posted @ 2019-04-07 13:42 walfy 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题意:给一颗字典树,m次查询,每次给出一个字符串,问你该字符串是字典树上多少串的后缀 题解:字典树求广义sam,每次把查询串在sam上跑一遍,最后到达的点的sz就是答案,中途没法走了,就是没有出现过 // pragma GCC optimize(2) // pragma GCC optimize(3 阅读全文
posted @ 2019-04-06 14:20 walfy 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个字符串,m次查询,每次问你第p个字符串的s到t的字符串在n个字符串建成的字典树上出现了多少次 题解:先建出字典树,在字典树上拓展sam,记录每个子串的出现次数.查询时只需找出在字典树上的t在sam中的位置,每次往fa跳(即后缀相同,长度减小)找到第一个长度比查询串的小于等于的位置就是答 阅读全文
posted @ 2019-04-06 13:50 walfy 阅读(178) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 56 下一页