Trie树基础题,记录下代码。

  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. #define MaxNode 4005*100
  5. #define NodeSize 26
  6. #define MOD 20071027
  7.  
  8. char givenword[300005];
  9. int ans[300005];
  10. int next[MaxNode][NodeSize];
  11. class Trie{
  12. public:
  13. int val[MaxNode];
  14. int sz;
  15. Trie(){
  16. sz = 1; //初始时有一个根结点
  17. memset(next[0], 0, sizeof(next[0]));
  18. }
  19. int idx(char ch){
  20. return ch - 'a';
  21. }
  22. void insert(char *s, int v){
  23. int len = strlen(s);
  24. int d = 0;
  25. for(int i = 0; i < len; ++i){
  26. int _idx = idx(s[i]);
  27. if(!next[d][_idx]){
  28. memset(next[sz],0,sizeof(next[sz]));
  29. val[sz] = 0;
  30. next[d][_idx] = sz++;
  31. }
  32. d = next[d][_idx];
  33. }
  34. val[d] = v;
  35. }
  36. void query(char *s,int pos){
  37. int len = strlen(s);
  38. int d = 0;
  39. for(int i = 0; i < len; ++i){
  40. int _idx = idx(s[i]);
  41. if(!next[d][_idx]) return;
  42. d = next[d][_idx];
  43. if(val[d]){
  44. ans[pos] += ans[pos+i+1];
  45. if(ans[pos] > MOD) ans[pos] -= MOD;
  46. }
  47. }
  48. return;
  49. }
  50. };
  51.  
  52. int main()
  53. {
  54. int S;
  55. int Case = 1;
  56. while(scanf("%s",givenword)!=EOF){
  57. int len = strlen(givenword);
  58. memset(ans,0,(len+1)*sizeof(int));
  59. ans[len] = 1;
  60. scanf("%d",&S);
  61. char tstr[105];
  62. Trie trie;
  63. for(int i = 0;i < S;++i){
  64. scanf("%s",tstr);
  65. trie.insert(tstr,1);
  66. }
  67. for(int i = len-1; i >= 0; --i){
  68. trie.query(&givenword[i],i);
  69. }
  70. printf("Case %d: ",Case++);
  71. printf("%d\n",ans[0]);
  72. }
  73. return 0;
  74. }

Remember the Word,LA3942(Trie树+DP)的更多相关文章

  1. LA-3942(trie树+dp)

    题意: 给出一个由多个不同单词组成的字典,和一个长字符串,把这个字符串分解成若干个单词的连接,问有多少种方法; 思路: dp[i]表示s[i,L]的方案数,d[i]=∑d[j];s[i,j-1]是一个 ...

  2. NBUT 1222 English Game(trie树+DP)

    [1222] English Game 时间限制: 1000 ms 内存限制: 131072 K 问题描写叙述 This English game is a simple English words ...

  3. POJ2004 Mix and build Trie树? dp?

    学习Trie树中,所以上网搜一下Trie树的题,找到这个,人家写着是简单dp,那我就想着能学习到什么Trie树上的dp,但最后发现根本好像跟Trie树没有什么联系嘛... 题意就是给你很多个字符串(长 ...

  4. [POJ 1204]Word Puzzles(Trie树暴搜&amp;AC自己主动机)

    Description Word puzzles are usually simple and very entertaining for all ages. They are so entertai ...

  5. LA 3942 - Remember the Word (字典树 + dp)

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  6. hdu4843(NOI2000) 古城之谜 (trie树+DP)

    Description 著名的考古学家石教授在云梦高原上发现了一处古代城市遗址.让教授欣喜的是在这个他称为冰峰城(Ice-Peak City)的城市中有12块巨大石碑,上面刻着用某种文字书写的资料,他 ...

  7. BZOJ1212[HNOI2004]L语言——trie树+DP

    题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...

  8. UVa1401 Remember the Word(DP+Trie树)

    题目给定一个字符串集合有几种方式拼成一个字符串. dp[i]表示stri...strlen-1的方案数 dp[len]=1 dp[i]=∑dp[j](stri...strj-1∈SET) 用集合的字符 ...

  9. UVALive 3942 Remember the Word 字典树+dp

    /** 题目:UVALive 3942 Remember the Word 链接:https://vjudge.net/problem/UVALive-3942 题意:给定一个字符串(长度最多3e5) ...

随机推荐

  1. 解决ASP.NET中ReportView与IE11的兼容性问题

    前久发现以前用ReportView开发的一个软件的报表,在IE11上运行时出错,陆续查了好几天才解决了问题. 开发环境: VS2010,ReportView 10.0.402,RDLC报表模板 问题: ...

  2. android handler机制简单介绍

    我们需要了解4个类: handler:处理者,用于发送和接收信息 massage:消息.里面可以存储消息的许多信息 looper:循环泵,用于循环取出消息队列中的消息 MessageQueue(一般不 ...

  3. 【转】教你爱上Blocks(闭包)

    Block 与传统代码相比较更加轻量,调用简洁方便,而且可以返回多个参数,使用Block可以让代码更加具有易读性,而我们在写回调时,也可以直接写在函数内部,而不用再去写一个回调函数 Block 闭包 ...

  4. Objective-C学习篇04—多态

    多态 多态的概念 有这样一个例子.早上我和同事说口渴了.结果:A同事拿着我的水杯去给我接了一杯水.B同事顺手在饮水机上拿了一次性纸杯给我接了杯水.C同事给了我一瓶他早上刚买的饮料.同事们得到的是同样的 ...

  5. spring web flow 2.0入门(转)

    Spring Web Flow 2.0 入门 一.Spring Web Flow 入门demo(一)简单页面跳转 附源码(转) 二.Spring Web Flow 入门demo(二)与业务结合 附源码 ...

  6. [置顶] css 背景透明,文字不透明,alpha滤镜,opacity,position:relative;

    都知道,在alpha滤镜下,背景透明了,里面的文字也会跟随透明,我们可以设置内容的position为relative可以解决这个问题 但是在position为absolute这么做却没有效果,怎么解决 ...

  7. mysql启动不了:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket

    ps aux |grep mysql kill所有列出的进程,然后重启 service mysql start 原因有可能是mysqld没启动:service mysqld start. 持续出现此问 ...

  8. js学习笔记之:时间(三)

    今天来学习一个简单的时间应用:时间的倒影,如图所示:   主要知识点: 1  获取系统的时间值:2 建立一个div的倒影 div的倒影主要利用css来控制,函数值为:filter:flipv() 步骤 ...

  9. 网易DBA私享会分享会笔记2

    mysql索引与查询优化什么是索引?索引其实是一个目录.通过各种数据结构实现,是(值=>行位置)的映射 索引的作用:1.提高访问速度2.实现主键.唯一键逻辑 索引使用场景数据量特别大的时候,进行 ...

  10. mysql中explain优化分析

    效率比较  range >index  > all