bzoj1212 [HNOI2004]L语言(Trie+暴力)
2017-08-16 22:40
417 查看
建出字典树,每次暴力找单词。。更新最大前缀即可。
#include <cstdio> #include <cstring> int const N=25,M=1050000;//1M=1024*1024Byte,1个字母占1Byte int n,m; bool f[M];//表示前i个是否能被理解 struct Trie{ bool end; Trie *son[26]; Trie(){memset(son,0,sizeof(son));end=false;} }*root,mempool[N*10],*cnt=mempool; void insert(Trie *&p,char *s){ if(!p) p=cnt++; if(!*s){p->end=true;return;} insert(p->son[(*s)-'a'],s+1); } void automaton(int id,char s[]){ Trie *p=root; for(int i=id;s[i];++i){ int j=s[i]-'a'; if(!p->son[j]) return; p=p->son[j]; if(p->end) f[i]=true; } } int main(){ // freopen("a.in","r",stdin); scanf("%d%d",&n,&m);root=cnt++; for(int i=1;i<=n;++i){ char s[15];scanf("%s",s);insert(root,s); } while(m--){ memset(f,0,sizeof(f));char s[M];scanf("%s",s+1);int ans=0; automaton(1,s); int len=strlen(s+1); for(int i=1;i<=len;++i) if(f[i]) ans=i,automaton(i+1,s); printf("%d\n",ans); } return 0; }
相关文章推荐
- 【BZOJ1212】[HNOI2004]L语言【Trie】【暴力】
- 【Trie】bzoj1212 [HNOI2004]L语言
- BZOJ 1212: [HNOI2004]L语言( dp + trie )
- [HNOI2004][bzoj1212] L语言 [Trie+dp]
- 【Trie+DP】BZOJ1212-[HNOI2004]L语言
- [BZOJ1212]-[HNOI2004]L语言-trie+DP
- 【BZOJ】1212 [HNOI2004]L语言 Trie
- [省选前题目整理][BZOJ 1212][HNOI 2004]L语言(Trie)
- bzoj1212: [HNOI2004]L语言 Trie+dp
- [bzoj1212] [HNOI2004]L语言(trie+dp)
- [BZOJ1212][HNOI2004]L语言(AC自动机+dp)
- [BZOJ1212][HNOI2004]L语言
- BZOJ 1212 [HNOI2004] L语言 AC自动机+DP
- BZOJ1212: [HNOI2004]L语言 AC自动机
- BZOJ 1212: [HNOI2004]L语言
- bzoj1212: [HNOI2004]L语言
- bzoj 1212 [HNOI2004]L语言
- 大视野1212--[HNOI2004]L语言(Trie+DP)
- Trie——Luogu2292/BZOJ1212 [HNOI2004]L语言
- Bzoj1212: [HNOI2004]L语言