摘要:
题目传送门题意:对一个字符串求一个最长的子串使得它至少出现k次额,因为这个题目呢,他的字符集非常大(100W)所以直接用SAM是不行了,我们考虑用离散化+SA,让后就可以分块rmq了当然这样很麻烦,我们还是用SAM,但是儿子集合用map来存,这样空间就是O(n)的,时... 阅读全文
摘要:
题目传送门题意:对一个字符串求一个最长的子串使得它至少出现k次额,因为这个题目呢,他的字符集非常大(100W)所以直接用SAM是不行了,我们考虑用离散化+SA,让后就可以分块rmq了当然这样很麻烦,我们还是用SAM,但是儿子集合用map来存,这样空间就是O(n)的,时间多了一个log#pragma ... 阅读全文
摘要:
题目传送门题意:对一个序列的差分求出现至少两次且两次不相交的最长子串也是SA和SAM都可以做,SA稍微麻烦SA做法:二分+height分段rmqSAM做法(太神了):对于每个节点的right集合,求出其中的最大值和最小值那么合法的长度一定为min(mx[x],r[x]-l[x])(l和r分别是最大值... 阅读全文
摘要:
题目传送门题意:对一个序列的差分求出现至少两次且两次不相交的最长子串也是SA和SAM都可以做,SA稍微麻烦SA做法:二分+height分段rmqSAM做法(太神了):对于每个节点的right集合,求出其中的最大值和最小值那么合法的长度一定为min(mx[x],r[x]... 阅读全文
摘要:
题目传送门题意:求两个字符串的LCS这个题是SA的经典题,也是SAM的经典题SA做法:连接两个字符串(中间加个#)让后求height,Answer=Max{height[i]}SAM做法:从开头匹配字符串,如果当前节点x能继续匹配就继续如果不能匹配,就令x=f[x]直... 阅读全文
摘要:
题目传送门题意:求两个字符串的LCS这个题是SA的经典题,也是SAM的经典题SA做法:连接两个字符串(中间加个#)让后求height,Answer=Max{height[i]}SAM做法:从开头匹配字符串,如果当前节点x能继续匹配就继续如果不能匹配,就令x=f[x]直到x为根或者可以继续匹配,这样显... 阅读全文
摘要:
题目传送门AC自动机第一题~一看就是一个非常简单的多串匹配问题了,输出方案?记录一下就好了注意这里code是Trie图,它是AC自动机的改进版本,有效利用了原本无用的边,这反而简化了代码#include#include#include#include#define N... 阅读全文
摘要:
题目传送门AC自动机第一题~一看就是一个非常简单的多串匹配问题了,输出方案?记录一下就好了注意这里code是Trie图,它是AC自动机的改进版本,有效利用了原本无用的边,这反而简化了代码#include#include#include#include#define N 100010using nam... 阅读全文