首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
POJ 3691 AC自动机上的dp
】的更多相关文章
POJ 3691 AC自动机上的dp
题目大意: 给定一些不合理的DNA序列,再给一段较长的dna序列,问最少修改几次可以使序列中不存在任何不合理序列,不能找到修改方法输出-1 这里你修改某一个点的DNA可能会影响后面,我们不能单纯的找匹配数,因为你找到了你也不一定有方法改变它 这里用DP来解决 判断到第i位dna , 之前dp值保存了前面dna所能到达的所有状态: dp[i][j] 也就是用了前i个dna所到达的状态至少需要修改的值 从所有状态出发,经过AGCT4种情况到达下一个状态,只要下一个状态不为非法状态即可 过程中只要判断…
POJ 3691 (AC自动机+状态压缩DP)
题目链接: http://poj.org/problem?id=3691 题目大意:给定N个致病DNA片段以及一个最终DNA片段.问最终DNA片段最少修改多少个字符,使得不包含任一致病DNA. 解题思路: 首先说一下AC自动机在本题中的作用. ①字典树部分:负责判断当前0~i个字符组成的串是否包含致病DNA,这部分靠字典树上的cnt标记完成. ②匹配部分:主要依赖于匹配和失配转移关系的计算,这部分非常重要,用来构建不同字符间状态压缩的转移关系(代替反人类的位运算). 这也是必须使用AC自动机而…
HNU 13108-Just Another Knapsack Problem (ac自动机上的dp)
题意: 给你一个母串,多个模式串及其价值,求用模式串拼接成母串(不重叠不遗漏),能获得的最大价值. 分析: ac自动机中,在字典树上查找时,用dp,dp[i]拼成母串以i为结尾的子串,获得的最大价值,dp[i]=max(dp[i],dp[i-len]+val[tmp]).,len是模式串的长度,val[tmp]为其价值. #include <cstdio> #include <cstring> #include <cmath> #include <queue>…
【BZOJ1030】[JSOI2007] 文本生成器(AC自动机上跑DP)
点此看题面 大致题意: 给你\(N\)个字符串(只含大写字母),要你求出有多少个由\(M\)个大写字母构成的字符串含有这\(N\)个字符串中的至少一个. \(AC\)自动机 看到题目,应该比较容易想到用\(AC\)自动机去做. 但是,即使用了\(AC\)自动机,这题直接求还是很麻烦,所以我们需要将题意先转化一下. 题意转化 考虑对于一个由\(M\)个大写字母构成的字符串,无非有两种情况: 第一种情况: 这个字符串中含有这\(N\)个字符串中的至少一个. 第二种情况: 这个字符串中不含这\(N\)…
BZOJ 1030 文本生成器 | 在AC自动机上跑DP
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=1030 题解: 鸽 #include<cstdio> #include<algorithm> #include<cstring> #define p 10007 #define N 6010 using namespace std; ,ans1,ans2=,a[N][],fail[N],q[N],f[][N]; ]; bool is[N]; void insert(…
URAL 1158 AC自动机上的简单DP+大数
题目大意 在一种语言中的字母表中有N(N<=50)个字母,每个单词都由M(M<=50)个字母构成,因此,一共可以形成N^M个单词.但是有P(P<=10)个串是被禁止的,也就是说,任何单词的子串都不能包含这P个串中的任意一个.问按照上述规则,能产生的合法串一共有多少个? 例如:N=3 M=3 P=3 字母表中的三个字符是QWE 被禁止的串为”QQ”,”WEE”,”Q”,则合法的串一共有7个. 这题目相当于通过步数对AC自动机上每一个点的状态进行DP dp[i][j]表示到达i这个点,走了j…
【洛谷4045】[JSOI2009] 密码(状压+AC自动机上DP)
点此看题面 大致题意: 给你\(n\)个字符串,问你有多少个长度为\(L\)的字符串,使得这些字符串都是它的子串.若个数不大于\(42\),按字典序输出所有方案. 状压 显然,由于\(n\)很小,我们可以把每个字符串是否出现过状压起来. 这样就可以起到极大的优化作用. 我们可以对每个节点开一个变量\(Ex\)记录一下该节点存在哪些字符串,转移起来就很方便了. \(AC\)自动机上\(DP\) 由于和子串有关,这题可以看做是一个多模匹配问题. 所以,我们考虑建出\(AC\)自动机. 然后,我们就可…
hdu 3247 AC自动+状压dp+bfs处理
Resource Archiver Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others)Total Submission(s): 2382 Accepted Submission(s): 750 Problem Description Great! Your new software is almost finished! The only thing left to…
POJ 3691 DNA repair ( Trie图 && DP )
题意 : 给出 n 个病毒串,最后再给出一个主串,问你最少改变主串中的多少个单词才能使得主串中不包含任何一个病毒串 分析 : 做多了AC自动机的题,就会发现这些题有些都是很套路的题目.在构建 Trie 图的时候给病毒串末尾打上标记,最后定义DP[i][j] = 长度为 i 的串在 j 这个状态节点最少改变数使得其不包含病毒串,则状态转移方程 if(Trie[k]不是被标记的病毒节点) DP[i+1][j] = min( DP[i+1][j], DP[i][k] + (mp[S[i]] != k)…
Passwords Gym - 101174E (AC自动机上DP)
Problem E: Passwords \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 给出两个正整数\(A,B\),再给出\(n\)个字符串,然后问你满足条件的字符串有多少种,最后答案\(\%1e6+3\).条件如下 \[ \begin{aligned} 1.&长度在A到B之间\\ 2.&所有子串不存在n个字符串中任意一个\\ 3.&模式串中,把0看成o,1看成i,3看成e,5看成s,7看成t\\ 4.&至少存在…