2012年2月9日

poj 2778 DNA Sequence AC自动机+矩阵快速幂

摘要: 题意:给定M个疾病DNA序列,求组成长度为N的DNA序列的个数,其字串不含疾病DNA,答案模100000。思路:AC自动机+矩阵快速幂先建自动机,注意某给定的疾病DNA序列是另一疾病DNA序列的子串的情况。 这种情况可以在建立失败链接的时候搞定。之后自动机上 每一个节点作为一个状态,总共node_num个状态node_num<=101。题目可以转换在一个有向图里,从i开始走k步一共有多少条路径。答案是有向图的邻接矩阵的k次方 输出G[i][1]+……+G[i][n]建立一个node_num*node_num 的矩阵 进行矩阵快速幂 具体转化详见http://hi.baidu.com/%D 阅读全文

posted @ 2012-02-09 20:29 myoi 阅读(263) 评论(0) 推荐(1) 编辑

poj 3294 Life Forms 后缀数组

摘要: 题意:给n个字符串,求一个最长的子串至少出现在[n/2+1]个字符串中思路:后缀数组 把所有字串连一起,并用不同的字符隔开 二分P.S. 1. 我的程序C++WA,G++ AC 2. 为什么char的上界是127啊 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 #define MAXN 110000 6 int n,m; 7 int suffix_array[MAXN]; 8 int rank[2*MAXN],oldrank[2*MAX 阅读全文

posted @ 2012-02-09 13:39 myoi 阅读(248) 评论(0) 推荐(0) 编辑

poj 3261 Milk Patterns 后缀树组

摘要: 题意:求可相交的重复k次串思路:后缀数组+二分 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 #define MAXN 20001 6 struct number 7 { 8 int num,id; 9 }; 10 number a[MAXN]; 11 int b[MAXN]; 12 int suffix_array[MAXN]; 13 int cnt[MAXN]; 14 int tmp[MAXN]; 15 int rank[MA 阅读全文

posted @ 2012-02-09 09:57 myoi 阅读(454) 评论(0) 推荐(0) 编辑

导航