AC自动机
EMber _
人但有追求,世界亦会让路。
展开
-
poj2778 DNA Sequence AC自动机+矩阵乘法
DNA Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15900 Accepted: 6137 DescriptionIt’s well known that DNA Sequence is a sequence only contains A, C, T and G, and i原创 2017-02-16 21:02:03 · 333 阅读 · 0 评论 -
bzoj3940[Usaco2015 Feb]Censoring AC自动机
同3942,建出AC自动机以后直接用栈来加入,只要在fail树上匹配成功就弹出。 复习一波AC自动机。。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b原创 2017-07-11 14:21:15 · 397 阅读 · 0 评论 -
bzoj2580 [Usaco2012 Jan]Video Game AC自动机+dp
挺明显的dp,设f[i][j]表示走到第i个位置,trie上的第j个节点的最大答案,把每个结尾+1然后求出前缀和,直接更新就可以了#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(原创 2017-05-28 11:04:30 · 391 阅读 · 0 评论 -
bzoj2938[Poi2000]病毒 AC自动机+dfs
这题其实和之前考的那个无限链一样,而且还是简化版本,,直接建AC自动机然后在trie上dfs,找一个环而且经过的点不为结束点就好了,然而智障的我居然忘记了怎么写AC自动机。。明明那个时候理解的很透彻的说。。看来不复习的话什么东西都会忘记啊。。唉。。#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#de原创 2017-05-04 17:15:15 · 288 阅读 · 0 评论 -
bzoj3172 AC自动机+标记和
题意比较坑爹。。他的意思是每一个串都是文本。。比如样例,a就不用说了,aa在本身出现一次,aaa中出现两次。怎么做呢,如果直接暴力匹配是会炸的。但是我们发现如果每个串本身就是文本的话我们是已经遍历过一次的,可以在上面记录一些信息,来达到题目的要求。我们设每个串结束的位置为pos[i],那么每次插入新串的时候经过的每个地方都把标记+1,然后跑fail的时候吧fail树上的节点全部加起来就是答案了。表示原创 2017-02-15 21:59:05 · 277 阅读 · 0 评论 -
bzoj2938 [Poi2000]病毒 AC自动机+DP
Description二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码。如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的。现在委员会已经找出了所有的病毒代码段,试问,是否存在一个无限长的安全的二进制代码。 示例: 例如如果{011, 11, 00000}为病毒代码段,那么一个可能的无限长安全代码就是010101…。如果{01, 11, 000000}为病原创 2017-02-14 17:10:15 · 380 阅读 · 0 评论 -
tyvj 1519 博彩游戏 AC自动机+DP
背景 Background Bob最近迷上了一个博彩游戏……描述 Description 这个游戏的规则是这样的: 每花一块钱可以得到一个随机数R,花上N块钱就可以得到一个随机序列; 有M个序列,如果某个序列是产生的随机序列的子串,那么就中奖了,否则不中。 Bob会告诉你这M个序列,和身上有的钱的总数N,当然还有R的范围。 请你告诉Bob中奖的概率有多少?输入格式 InputFormat原创 2017-02-14 16:36:07 · 2518 阅读 · 0 评论 -
bzoj2754&JZOJ2834【SCOI2012】喵星球上的点名 AC自动机+STL
题意比较复杂,就不说了。感觉这题目拿来恶心人的。。连输入都要花费好大功夫。表示这种题目经典套路啊,一般来说直接上AC自动机,暴力把大串往小串上贴,然后直接计算答案就行了,但是这数据大小简直了。。算了算发现离散也没用,表示不会用STL,于是去网上膜了一波做法,一脸懵逼,勉强看懂,如果考试肯定切不了这题。听说正解是SA+主席树。code(超丑。。):#include<iostream>#include原创 2017-02-17 20:51:38 · 524 阅读 · 0 评论 -
bzoj 1030 AC自动机+DP
Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群, 他们现在使用的是GW文本生成器v6版。该软件可以随机生成一些文章―――总是生成一篇长度固定且完全随机的文 章—— 也就是说,生成的文章中每个字节都是完全随机的。如果一篇文章中至少包含使用者们了解的一个单词, 那么我们说这篇文章是可读的(我们称文章a包含单词b,当原创 2017-02-09 21:43:25 · 311 阅读 · 0 评论 -
poj3691DNA repair AC自动机+dp
题目的意思是给你一些串,然后给你一个大串,问你要在这个大串上最少修改多少个地方使得这个大串不含任何一个小的串。分析:经典套路,直接dp,还是设f[i,j]表示走到大串的第i个位置,然后直接把模板串往trie上贴就行了,如果当前位置trie上的字母和模板串相同自然不用修改,否则就+1咯。当然不能走单词的末尾节点,直接跳过就可以了。最后注意一下边界,还有如果你是直接读串的话c++是dp的状态和子串的位置原创 2017-02-17 15:39:52 · 300 阅读 · 0 评论 -
hdu 2222 AC自动机模板(非指针)
题意:给一串字符串再给一个字符串,求前面那些串有多少出现在这个串中。n<=10000,sumlen<=1000000. PS:好久没打AC自动机了,打一发模板练练手,不过相当讨厌c艹的指针,看着就恶心。。 代码:#include<iostream>#include<cstdio>#include<cmath>#include<queue>#include<algorithm>#incl原创 2017-02-08 22:20:34 · 507 阅读 · 0 评论 -
5332. 【NOIP2017提高A组模拟8.23】密码 AC自动机+数位DP
题意:求x-y之间有多少个数字包含至少k个密钥,密钥给出,x-y的数位比500小。 老年选手,这种题都不会做了,我退群吧。 就是随便AC自动机dp啊。。。我太废了。 设f[i][j][k][0/1]表示匹配到串的第i个节点,AC自动机上跑到了j,已经匹配了k个密钥, 0/1表示我之前匹配的哪些数位是否完全匹配某些密钥。 所以1可以转化为1或0,0只能转化0,然后xjbDP就好。。#incl原创 2017-08-23 20:35:24 · 277 阅读 · 0 评论