Codeforces 86C Genetic engineering
来源:互联网 发布:金十数据知乎 编辑:程序博客网 时间:2024/05/21 11:30
orz题解的Dp,竟然没调就1A了。。。。。
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include <queue>#include <vector>using namespace std;#define N 1010#define Mod 1000000009int n,m;int Dp[N][110][11],id[30];struct AcAuto{int next[N][4],fail[N],Cover[N];int tot,root;int New_node(){for(int i=0;i<4;i++)next[tot][i]=-1;Cover[tot++]=0;return tot-1;} void Init(){tot=0;root=New_node();}void Insert(char *T){int len=(int)strlen(T);int now=root;for(int i=0;i<len;i++){int num=id[T[i]-'A'];if(next[now][num]==-1)next[now][num]=New_node();now=next[now][num];}Cover[now]=len;}void Build_Failtree(){queue<int> Q;fail[root]=root;for(int i=0;i<4;i++){if(next[root][i]==-1)next[root][i]=root;else{fail[next[root][i]]=root;Q.push(next[root][i]);}}while(!Q.empty()){int now=Q.front();Q.pop();Cover[now]=max(Cover[now],Cover[fail[now]]);for(int i=0;i<4;i++){if(next[now][i]==-1)next[now][i]=next[fail[now]][i];else {fail[next[now][i]]=next[fail[now]][i];Q.push(next[now][i]);}}}}void Solve(){memset(Dp,0,sizeof(Dp));Dp[0][0][0]=1;for(int i=0;i<n;i++){for(int j=0;j<tot;j++){for(int k=0;k<10;k++){for(int t=0;t<4;t++){int nowj=next[j][t],nowi=i+1;if(Cover[nowj]>=k+1)Dp[nowi][nowj][0]=(Dp[nowi][nowj][0]+Dp[i][j][k])%Mod;else Dp[nowi][nowj][k+1]=(Dp[nowi][nowj][k+1]+Dp[i][j][k])%Mod;}}}}int Ans=0;for(int i=0;i<tot;i++)Ans=(Ans+Dp[n][i][0])%Mod;printf("%d\n",Ans);return;}};AcAuto A;char S[20];int main(){cin>>n>>m;id[0]=0;id[2]=1;id['G'-'A']=2;id['T'-'A']=3;A.Init();for(int i=1;i<=m;i++){scanf("%s",S);A.Insert(S);}A.Build_Failtree();A.Solve();return 0;}
0 0
- Codeforces 86C Genetic engineering
- CodeForces 86C-Genetic engineering
- Codeforces 86C Genetic engineering (AC自动机好题)
- Codeforces 86C Genetic engineering (AC自动机+dp)
- CodeForces 86C Genetic engineering (AC自动机 上 DP)
- A. Genetic Engineering
- Rockethon 2014 A. Genetic Engineering
- ZOJ1984:genetic code 遗传编码 题解 C
- Codeforces 86C
- Genetic Algorithm
- Genetic Programming
- CodeForces 86C AC自动机
- Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
- Over-Engineering & Under Engineering
- Genetic Algorithms 的改进
- TSP-Genetic Algorithm
- Genetic Algorithm for VRP
- 遗传算法 Genetic Algorithm
- thrift+python 报错Invalid method name
- JAVA 使用Dom4j 解析XML
- android游戏中关卡式背景是怎么做出来的
- 调用系统通讯录
- iOS动态获取键盘高度方法
- Codeforces 86C Genetic engineering
- 关于文件转换代码和openoffice服务在不同的linux上报错conversion failed: could not load input document的问题
- 《挑战程序设计竞赛》4.2.1 游戏必胜策略-推理与动态规划算法 POJ2484 2348 1082 2068 3688 1740(1)
- 操作系统的基本特性
- 架构师行为准则
- gradle 1+1
- SVN的MKACTIVITY 403 Forbidden 异常处理
- YTU 2918: Shape系列-4
- 我的博客