hdu 5384 Danganronpa
2015-08-14 16:20
337 查看
#include<cstring> #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<queue> #define INF 0x3f3f3f3f #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; typedef long long LL; const int SIGMA_SIZE=26; const int MAXN=100010; const int MAXNODE=600010; const LL MOD= 258280327; int T,N,M; LL ans; string str1[MAXN],str2[MAXN]; struct AC{ int ch[MAXNODE][SIGMA_SIZE],f[MAXNODE],sz; LL val[MAXNODE]; void init(){ memset(ch[0],0,sizeof(ch[0])); val[0]=0; sz=1; } inline int idx(char c){ return c-'a'; } void insert(string s){ int u=0,len=s.size(); for(int i=0;i<len;i++){ int c=idx(s[i]); if(!ch[u][c]){ memset(ch[sz],0,sizeof(ch[sz])); val[sz]=0; ch[u][c]=sz++; } u=ch[u][c]; } val[u]++; } void get_fail(){ queue<int> q; f[0]=0; for(int c=0;c<SIGMA_SIZE;c++){ int u=ch[0][c]; if(u){ f[u]=0; q.push(u); } } while(!q.empty()){ int r=q.front(); q.pop(); for(int c=0;c<SIGMA_SIZE;c++){ int u=ch[r][c]; if(!u){ ch[r][c]=ch[f[r]][c]; continue; } q.push(u); f[u]=ch[f[r]][c]; val[u]+=val[f[u]]; } } } void find(string T){ int j=0; int len=T.size(); for(int i=0;i<len;i++){ int c=idx(T[i]); j=ch[j][c]; ans+=val[j]; } } }ac; int main(){ #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); freopen("out.txt", "w", stdout); #endif // ONLINE_JUDGE scanf("%d",&T); while(T--){ scanf("%d%d",&N,&M); for(int i=1;i<=N;i++) cin>>str1[i]; for(int i=1;i<=M;i++) cin>>str2[i]; ac.init(); for(int i=1;i<=M;i++) ac.insert(str2[i]); ac.get_fail(); for(int i=1;i<=N;i++){ ans=0; ac.find(str1[i]); printf("%I64d\n",ans); } } return 0; }
相关文章推荐
- Eclipse 用maven构建web项目
- hdu 5375 - Gray code(dp) 解题报告
- FHS 标准的文件系统的目录结构
- c#异步调用和回调
- css三角的做法
- 【锋利的jQuery】学习笔记02
- 二分查找(JAVA)
- 判断IP地址,MAC地址合法性-C语言
- Triangle LOVE 4324 (拓扑排序)
- 二三十万汽车选型指南
- Ivshmem实现分析与性能测试
- 关于在header里增加参数的方式
- 微信支付过程中遇到的问题
- Android Fragment 你应该知道的一切
- 设计模式:观察者模式
- BZOJ 1212 HNOI2004 L语言 AC自己主动机(Trie树)+动态规划
- 【ASP.NET开发】获取客户端IP地址 via C#
- 必须记住的30类选择器
- c# EmguCv定位二维码
- maven在eclipse建立工程,运行出现Server IPC version 9 cannot communicate with client version 4错误