Remember the Word,LA3942(Trie树+DP)
Trie树基础题,记录下代码。
#include <cstdio>
#include <cstring> #define MaxNode 4005*100
#define NodeSize 26
#define MOD 20071027 char 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;
}
Remember the Word,LA3942(Trie树+DP)的更多相关文章
- LA-3942(trie树+dp)
题意: 给出一个由多个不同单词组成的字典,和一个长字符串,把这个字符串分解成若干个单词的连接,问有多少种方法; 思路: dp[i]表示s[i,L]的方案数,d[i]=∑d[j];s[i,j-1]是一个 ...
- NBUT 1222 English Game(trie树+DP)
[1222] English Game 时间限制: 1000 ms 内存限制: 131072 K 问题描写叙述 This English game is a simple English words ...
- POJ2004 Mix and build Trie树? dp?
学习Trie树中,所以上网搜一下Trie树的题,找到这个,人家写着是简单dp,那我就想着能学习到什么Trie树上的dp,但最后发现根本好像跟Trie树没有什么联系嘛... 题意就是给你很多个字符串(长 ...
- [POJ 1204]Word Puzzles(Trie树暴搜&AC自己主动机)
Description Word puzzles are usually simple and very entertaining for all ages. They are so entertai ...
- LA 3942 - Remember the Word (字典树 + dp)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- hdu4843(NOI2000) 古城之谜 (trie树+DP)
Description 著名的考古学家石教授在云梦高原上发现了一处古代城市遗址.让教授欣喜的是在这个他称为冰峰城(Ice-Peak City)的城市中有12块巨大石碑,上面刻着用某种文字书写的资料,他 ...
- BZOJ1212[HNOI2004]L语言——trie树+DP
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- UVa1401 Remember the Word(DP+Trie树)
题目给定一个字符串集合有几种方式拼成一个字符串. dp[i]表示stri...strlen-1的方案数 dp[len]=1 dp[i]=∑dp[j](stri...strj-1∈SET) 用集合的字符 ...
- UVALive 3942 Remember the Word 字典树+dp
/** 题目:UVALive 3942 Remember the Word 链接:https://vjudge.net/problem/UVALive-3942 题意:给定一个字符串(长度最多3e5) ...
随机推荐
- C#word(2007)操作类--新建文档、添加页眉页脚、设置格式、添加文本和超链接、添加图片、表格处理、文档格式转化
转:http://www.cnblogs.com/lantionzy/archive/2009/10/23/1588511.html 1.新建Word文档 #region 新建Word文档/// &l ...
- (转)DedeCms Runphp 标签中调用其他变量的方法
DedeCms Runphp 标签中调用其他变量的方法 我们都知道,在DedeCMS中是可以使用PHP的,常见的方法就是if else了,例如模板制作中,我们需要对来源和作者进行判断,如果为空,则提示 ...
- ueditor asp.net版本更改图片保存路径
目的:把本地上传的图片放置到跟目录下的Images/Upload文件夹下. 修改步骤: 1.ueditor.config.js文件中的, imagePath: URL + "net/&quo ...
- 对DNSPOD添加域名解析的一些见解
1.主机记录这步比较简单,输入“www”表示比较常规的域名例如www.abc.com,“@”表示abc.com,“ * ”表示泛解析,匹配所有*.abc.com的域名. 2.记录类型这步,一般常用A记 ...
- Spring mvc 中有关 Shiro 1.2.3 配置问题
Spring 版本:3.2.x, 4.0.x [问题说明] 首先介绍下配置出错情况: (1)项目中,Spring3 and Spring4 的 applicationContext.xml aop ...
- IE layout详解
引言: Internet Explorer 中有很多奇怪的渲染问题可以给他一个”layout”得到解决,John Gallant 和 Holly Bergevin把他归类为“dimensional b ...
- oracle通过query导出指定条件的数据
通过下面的方式oracle可以导出指定了条件的数据: exp mixcoaldb/mixcoaldb@server tables=(shengcssjk) query=\"where to_ ...
- [转]JS继承的5种实现方式
参考链接: http://yahaitt.iteye.com/blog/250338 虽说书上都讲过继承的方式方法,但这些东西每看一遍都多少有点新收获,所以单独拿出来放着. 1. 对象冒充 funct ...
- Css 描点
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- 工具函数之JS
1. 判断元素是否有滚动条 /* 检测元素是否出现滚动条 @param [object HTMLElement] elm The HTMLElement object @return [Object] ...