随笔分类 - 字符串处理——AC自动机
摘要:【传送门:BZOJ2938】 简要题意: 给出n个01串,判断是否存在一个无限长的01串不包含任意一个给出的01串 题解: AC自动机构造fail指针,画一下图可以知道 如果在字典树中找到环,就可以找到一个无限长的01串 注意:当一个点有一个儿子不存在时,可以将fail边当作儿子边来使用,这样子就可
阅读全文
摘要:【传送门:BZOJ3530】 简要题意: 给出m个数,要求求出不含任意一个数的长度至多为n的数的数量 题解: 这道题比文本生成器要复杂一点,就是因为它的位数不确定,且不可以含有前导0 所以我们用数位DP的思想来做 设f[i][j][k]为当前长度为i且走到AC自动机的第j个点时,如果k=0,则表示仍
阅读全文
摘要:【传送门:BZOJ1030】 简要题意: 给出n个单词,要求求出至少含一个单词的长度为n的字符串数量 题解: 显然直接求出是很难求的,那么我们就求出总的字符串数量,再求出不含任何一个单词的字符串数量 然后相减就是答案 很像GT考试,不过变成了多个串,那么就用AC自动机 设f[i][j]为长度为i时到
阅读全文
摘要:【传送门:BZOJ2434】 简要题意: 给出一个串,然后这个串有28种字符,26个小写英文字母和'B','P'两个字母 我们定义一个模式串(一开始这个串是空的) 假如当前输入的字符是小写英文字母的话,就在模式串的末尾加上这个字母 如果是'B',就把模式串的末尾给去掉 如果是'P',就把当前模式串当
阅读全文
摘要:【传送门:BZOJ3172】 简要题意: 给出n个单词,你可以理解为将这些单词变成一个个段落,然后求出每个单词在所有段落中出现的次数 题解(一): 刚开始不是很懂题目,结果发现将所有单词看成一篇文章,每个单词看成一个段落就懂了 由于某种unbelievable的原因,我刚好做了AC自动机的专题训练,
阅读全文