
AC自动机
文章平均质量分 84
詹明捷
此博客停止更新,迁移至www.zhanmingjie.com
展开
-
AC自动机+DP 改变字符串中的‘?’使得在字典中匹配到的次数最多 codechef Lucy and Question Marks
the best way to restore is to replace all the question marks by latin letters in such a way that the total sum of occurrences of all the strings from her dictionary in it is maximal.原创 2015-08-19 16:21:18 · 1140 阅读 · 0 评论 -
出现次数最多的单词 AC自动机 UVA 1449 Dominating Patterns
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4195 题意:给你n个单词,还有一个长文本s,现在要你输出在文本s中出现次数最多的单词。 分析: 直接建立AC自动机,并且val值是当前插入单词的编号。建立AC自动机后,原创 2015-09-24 21:47:51 · 766 阅读 · 0 评论 -
求一个最长的串使得该串不包含任何禁止串为子串 AC自动机+DP +dfs判环 UVA 1399 - Puzzle
题目链接 题意:给定K和N,表示有K种不同的字符,N个禁止串,求一个最长的串使得该串不包含任何禁止串为子串。如果存在循环或者不能构成的话,输出No。 思路:建ACM自动机,把不可走结点标记构造出来,然后在这个状态图上进行dp找出最长路径即可,至于无限长的情况,只要在dp前进行一次dfs判有没有环即可 代码: #include #include #include原创 2015-10-03 15:58:43 · 779 阅读 · 0 评论 -
长度为n的密码利用给定的m个串最多有几种组合 AC自动机+DP UVA 1076 - Password Suspects
题目链接 题意:一个密码,给定m个已知子串,求这个密码最多有几种表示方式,如果小于42种,就输出这些密码 思路:先利用已有子串构造AC自动机,需要改造一下的地方是每个叶子结点为(1 代码: #include #include #include #include #include #include using namespace std;原创 2015-10-03 16:41:39 · 844 阅读 · 0 评论 -
矩阵匹配 AC自动机 或 二维Hash UVa 11019 - Matrix Matcher
题意:给出一个n*m的字符矩阵T,你的任务是找出给定的x*y的字符矩阵P在T中出现了多少次. 分析:要想整个矩阵匹配,至少各行都得匹配。所以先把P的每行看做一个模式串构造出AC自动机,然后在T中的各行逐一匹配,找到P中每一行的所有匹配点。 只要在匹配时做一些附加操作,就可以把匹配出来的单一的行拼成矩形。用一个count[r][c]表示T中一(r,c)为右上角,与P等大的矩形中有多少个完原创 2015-09-24 23:29:39 · 713 阅读 · 0 评论 -
随机生成的S不包含任何一个串的概率 AC自动机+概率DP UVA 11468 Substring
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=505&page=show_problem&problem=2463 题意:给出一些字符和各自对应的选择概率,随机选择L次后将得到一个长度为L的随机字符串S.给出K个模版串,计算S不包含任何一个串的概率 分析:构造AC自动机之原创 2015-09-24 22:23:53 · 1055 阅读 · 1 评论