UVa1401 Remember the Word(DP+Trie树)
题目给定一个字符串集合有几种方式拼成一个字符串。
- dp[i]表示stri...strlen-1的方案数
 - dp[len]=1
 - dp[i]=∑dp[j](stri...strj-1∈SET)
 
用集合的字符串构造一棵Trie树,然后就可以在线性时间判断哪几个前缀字符串在集合里。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ch[][],tn;
bool flag[];
void insert(char *s){
int x=;
for(int i=; s[i]; ++i){
int y=s[i]-'a';
if(ch[x][y]==) ch[x][y]=++tn;
x=ch[x][y];
}
flag[x]=;
}
char word[];
int d[];
int main(){
int t=,n;
char str[];
while(~scanf("%s",word)){
tn=;
memset(ch,,sizeof(ch));
memset(flag,,sizeof(flag));
scanf("%d",&n);
while(n--){
scanf("%s",str);
insert(str);
}
memset(d,,sizeof(d));
int len=strlen(word);
d[len]=;
for(int i=len-; i>=; --i){
int x=;
for(int j=i; j<len; ++j){
int y=word[j]-'a';
if(ch[x][y]==) break;
x=ch[x][y];
if(flag[x]) d[i]+=d[j+],d[i]%=;
}
}
printf("Case %d: %d\n",++t,d[]);
}
return ;
}
UVa1401 Remember the Word(DP+Trie树)的更多相关文章
- UVA1401 Remember the word  DP+Trie
		
问题描述 洛谷(有翻译) 题解 DP,设\(opt_i\)代表前\(i\)个字符方案数. Trie优化,刷表法. \(\mathrm{Code}\) #include<bits/stdc++.h ...
 - Codeforces 615C Running Track(DP + Trie树)
		
题目大概说给两个串,问最少要用多少个第一个串的子串(可以翻转)拼成第二个串. UVa1401,一个道理..dp[i]表示前缀i拼接成功所需最少的子串,利用第一个串所有子串建立的Trie树往前枚举转移. ...
 - 洛谷:P2292 [HNOI2004]L语言(DP+Trie树)
		
P2292 [HNOI2004]L语言 题目链接:https://www.luogu.org/problemnew/show/P2292 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有 ...
 - [POJ 1204]Word Puzzles(Trie树暴搜&AC自己主动机)
		
Description Word puzzles are usually simple and very entertaining for all ages. They are so entertai ...
 - UVALive - 3942 (DP + Trie树)
		
给出一个长度不超过300000的字符串 S,然后给出 n 个长度不超过100的字符串. 如果字符串可以多次使用,用这 n 个字符串组成 S 的方法数是多少? 比如样例中,abcd = a + b + ...
 - HNU 13108 Just Another Knapsack Problem DP + Trie树优化
		
题意: 给你一个文本串,和一些模式串,每个模式串都有一个价值,让你选一些模式串来组成文本串,使获得的价值最大.每个模式串不止能用一次. 思路: 多重背包,枚举文本串的每个位置和模式串,把该模式串拼接在 ...
 - Codeforces 633C Spy Syndrome 2(DP + Trie树)
		
题目大概说给一个加密的字符串,加密规则是把原文转化成小写字母,然后各个单词反转,最后去掉空格.现在给几个已知的单词,还原加密的字符串. 和UVa1401一个道理.. 用dp[i]表示加密字符前i个字符 ...
 - Remember the Word,LA3942(Trie树+DP)
		
Trie树基础题,记录下代码. #include <cstdio> #include <cstring> #define MaxNode 4005*100 #define No ...
 - NBUT 1222 English Game(trie树+DP)
		
[1222] English Game 时间限制: 1000 ms 内存限制: 131072 K 问题描写叙述 This English game is a simple English words ...
 
随机推荐
- Android四大组件之Service
			
Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: ...
 - Coursera台大机器学习课程笔记14 -- Validation
			
这节课是接着上节的正则化课程的,目的也是为了防止overfitting. 第一小节讲了模型的选择,前面讲了很多模型,那么如何做出正确的选择呢?我们的目标是选择最小的Eout目标函数.首先应避免视觉化选 ...
 - Rotate bitmap by real angle
			
tl;dr; Use GDI+ SetWorldTransform With WinAPI's SetWorldTransform you can transform the space of dev ...
 - MYSQL随机抽取查询 MySQL Order By Rand()效率问题
			
MYSQL随机抽取查询:MySQL Order By Rand()效率问题一直是开发人员的常见问题,俺们不是DBA,没有那么牛B,所只能慢慢研究咯,最近由于项目问题,需要大概研究了一下MYSQL的随机 ...
 - 已知局域网IP地址,如何查看mac
			
arp -a 加对方IP是查对方的MAC地址 转自: http://zhidao.baidu.com/link?url=8sRdpGcjfGQ-C1F9zNub49Mxe3DAR-RCAHDkHvKC ...
 - JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)
			
一.以下介绍Spring中直接集成JOTM提供JTA事务管理.将JOTM集成到Tomcat中. (经过测试JOTM在批量持久化时有BUG需要修改源码GenericPool类解决)! 参考文章http: ...
 - js 函数定义三种方式
			
<p>Js 函数定义的三种方式:</p> <br> <p>方式一:function</p> <script type="te ...
 - 推荐一篇java抽象类和接口区别的文章
			
写的不错,http://dev.yesky.com/436/7581936.shtml
 - 在cmd命令行中弹出Windows对话框
			
有时候用bat写一些小脚本最后会弹出对话框提示操作成功,可以用mshta.exe来实现,它是Windows系统的相关程序,用来执行.HTA文件,一般计算机上面都有这个程序,实现如下: mshta vb ...
 - setup 桌面化设置网卡
			
# setup