Remember the Word,LA3942(Trie树+DP)
来源:互联网 发布:软件发明专利怎么写 编辑:程序博客网 时间:2024/05/29 12:39
Trie树基础题,记录下代码。
#include <cstdio>#include <cstring>#define MaxNode 4005*100#define NodeSize 26#define MOD 20071027char givenword[300005];int ans[300005];int next[MaxNode][NodeSize];class Trie{ public: int val[MaxNode]; int sz; Trie(){ sz = 1; //初始时有一个根结点 memset(next[0], 0, sizeof(next[0])); } int idx(char ch){ return ch - 'a'; } void insert(char *s, int v){ int len = strlen(s); int d = 0; for(int i = 0; i < len; ++i){ int _idx = idx(s[i]); if(!next[d][_idx]){ memset(next[sz],0,sizeof(next[sz])); val[sz] = 0; next[d][_idx] = sz++; } d = next[d][_idx]; } val[d] = v; } void query(char *s,int pos){ int len = strlen(s); int d = 0; for(int i = 0; i < len; ++i){ int _idx = idx(s[i]); if(!next[d][_idx]) return; d = next[d][_idx]; if(val[d]){ ans[pos] += ans[pos+i+1]; if(ans[pos] > MOD) ans[pos] -= MOD; } } return; }};int main(){ int S; int Case = 1; while(scanf("%s",givenword)!=EOF){ int len = strlen(givenword); memset(ans,0,(len+1)*sizeof(int)); ans[len] = 1; scanf("%d",&S); char tstr[105]; Trie trie; for(int i = 0;i < S;++i){ scanf("%s",tstr); trie.insert(tstr,1); } for(int i = len-1; i >= 0; --i){ trie.query(&givenword[i],i); } printf("Case %d: ",Case++); printf("%d\n",ans[0]); } return 0;}
0 0
- [Trie树][dp] LA3942 Remember the Word
- Remember the Word,LA3942(Trie树+DP)
- LA3942 remember the word trie+dp
- LA3942 Remember the Word(Trie+DP)
- 【LA3942】Remember the Word【Trie】【计数DP】
- LA3942 Remember the Word(Trie+DP)
- [Trie树][dp] LA3942 Remember the Word 真·解法
- 【Trie的模板】例题11 LA3942 Remember the Word(字典树+dp)
- LA3942 Remember the Word(字典树+DP)
- Uva1401/LA3942 Remember the Word(trie模板)
- Remember the Word LA3942
- (LA 3942)Remember the Word --DP+Trie树
- UVA 1401 Remember the Word(DP+字典树Trie)
- Remember the Word - UVaLive 3942 Trie树+dp
- uva 1401Remember the Word(trie树+dp)
- UVA 1401 Remember the Word(Trie树 套 DP)
- LA 3942 Remember the Word Trie树 DP
- UVA 1401 Remember the Word(DP+字典树Trie)
- 线性表----链接栈的基本操作
- View的生命周期
- 《windows 程序调试》读书笔记之跟踪篇
- 网络流的EK算法模板
- Java中的String与常量池
- Remember the Word,LA3942(Trie树+DP)
- fedora14下编译qtopia问题. uuid, X11
- PDF在线解决方案(1)
- windows与linux 汇编差异
- 《windows 程序调试》读书笔记之编译器篇
- VS2010编译调试STL源代码
- Kalevich Strikes Back(扫描线求分块的面积)
- Java Runtime.getRuntime.exec() 与linux shell find
- 学习Spark第一天---1张图了解Spark