一个简单的字典树上的dp;

代码:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<queue>
 4 #define maxn 400000
 5 #define mod 20071027
 6 using namespace std;
 7 priority_queue<int,vector<int>,greater<int> >q;
 8 struct node
 9 {
10     bool f;
11     node *a[26];
12 } no[maxn];
13 int nonocount;
14 int d[maxn];
15 bool vis[maxn];
16 node *newnode()
17 {
18     node *p=no+nonocount++;
19     p->f=0;
20     for(int i=0; i<26; i++)
21         p->a[i]=NULL;
22     return p;
23 }
24
25 void insert(char *t)
26 {
27     node *root=no;
28     int l=strlen(t);
29     for(int i=0; i<l; i++)
30     {
31         if(root->a[t[i]-'a']==NULL)
32             root->a[t[i]-'a']=newnode();
33         root=root->a[t[i]-'a'];
34     }
35     root->f=1;
36 }
37 char s[maxn],t[105];
38 int len;
39 void query(int w)
40 {
41     node *root=no;
42     for(int i=w; i<len; i++)
43     {
44         if(root->a[s[i]-'a']==NULL)break;
45         root=root->a[s[i]-'a'];
46         if(root->f)
47         {
48             d[i]+=d[w-1];
49             d[i]=d[i]%mod;
50             if(!vis[i+1])
51             {
52                 vis[i+1]=1;
53                 q.push(i+1);
54             }
55         }
56     }
57     while(!q.empty())
58     {
59         int v=q.top();
60         q.pop();
61         query(v);
62     }
63 }
64
65
66 int main()
67 {
68     int n,ca=1;
69     while(scanf("%s",s+1)!=EOF)
70     {
71         s[0]='#';
72         memset(d,0,sizeof d);
73         d[0]=1;
74         memset(vis,0,sizeof vis);
75         vis[1]=1;
76         nonocount=0;
77         node *p=newnode();
78         scanf("%d",&n);
79         for(int i=0; i<n; i++)
80         {
81             scanf("%s",t);
82             insert(t);
83         }
84         len=strlen(s);
85         query(1);
86         printf("Case %d: %d\n",ca++,d[len-1]%mod);
87     }
88     return 0;
89 }

View Code

转载于:https://www.cnblogs.com/yours1103/p/3396455.html

uva 1401 - Remember the Word相关推荐

  1. UVa 642 - Word Amalgamation

    题目:给你一个单词列表.再给你一些新的单词.输出列表中又一次排列能得到此新单词的词. 分析:字符串.对每一个字符串的字母排序生成新的传f(str).总体排序,用二分来查找就可以. 说明:注意输出要满足 ...

  2. Word UVA - 517 状态压缩 暴力搜索

    问题 https://vjudge.net/problem/UVA-517 分析 每次都循环到字典序最小的时候记录. 一共最多有2162^16216种,因为每种状态都变到字典序最小的时候,所以实际的远 ...

  3. UVa 10508 - Word Morphing

    題目:有一些長度相同的字符串,從起始字符串每次改變一個字符,轉化成其他字符,求轉化順序. 分析:簡單題.直接求出不同字符的個數排序輸出即可. 說明:題目的條件都是迷惑的\(^o^)/~. #inclu ...

  4. UVa12467 Secret Word(kmp)

    先将s反转得到字符串t,再通过kmp求得t的子串,使得访子串是s的最长前缀 代码参考: OJ/UVa/12467 Secret Word at master · wuli2496/OJ · GitHu ...

  5. STL --- UVA 123 Searching Quickly

    UVA - 123 Searching Quickly Problem's Link:   http://acm.hust.edu.cn/vjudge/problem/viewProblem.acti ...

  6. java使用jacob操作word文档

    ava使用jacob操作word文档 java调用com组件操作word使用总结(jacob) 简单描述 在此处输入简单摘要 特别声明:使用java-com技术可以完成任何VBA可以完成的office ...

  7. 从隔壁兄弟那爬点网页数据,整理成word文档

    packagecom.parse_report;importcom.report.utils.ParseUrl;/*** Create by JIUN 2018/7/14*/ public class ...

  8. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  9. Ananagrams(sort+map) UVA - 156 统计字谜

    Ananagrams(sort+map) UVA - 156 统计字谜 Most crossword puzzle fans are used to anagrams - groups of word ...

最新文章

  1. 逐飞mini车样品说明
  2. 使用C#在VS Code中编写Notebook
  3. eclipse的editor does not contain a main type错误
  4. 程序员应该做的事(转自CSDN)
  5. 一周最新示例代码回顾 (4/23–4/29)
  6. 快手内容运营-数据分析面试
  7. 机器学习数学基础- gradient descent算法(上)
  8. Oracle数据库下载与安装(Windows)
  9. 习惯养成android软件,7款好用的习惯养成与打卡APP推荐
  10. EZEMC测试软件_EMI 和 EMC 仿真、测量和预兼容性测试
  11. bzoj4816: [Sdoi2017]数字表格
  12. 百度网盘等相关百度产品账号不存在问题
  13. Windows安装RabbitMQ的时候出现Plugin configuration unchanged
  14. Python pygame 坦克大战
  15. 如何锁定计算机桌面图标,用Desklock轻松设置和锁定桌面图标 -电脑资料
  16. CCF-CSP-201409-5 拼图
  17. 设计模式之责任链模式
  18. 四川成都攻防大赛技术细节
  19. 【无标题】HTML做一个简单漂亮的宠物网页(纯html代码)宠物 5页(二级菜单)
  20. 集米社浅谈下那些令网兼者疯狂的时代。

热门文章

  1. Servlet 调用过程
  2. (转) Twisted 第四部分: 由Twisted支持的诗歌客户端
  3. 【数据校验杂谈】循环冗余检验 (CRC) 算法原理
  4. linux下php、apache、mysql、curl环境搭建
  5. 计算机网络 原理与实验指导书,《计算机网络原理》实验指导书.doc
  6. ggplot2中显示坐标轴_ggplot2作图:修改图中一切文本的外观
  7. vs不识别0b二进制格式_数据背后的二进制
  8. Java 读取excl
  9. res.data.data_在Data.gov进行幕后推销
  10. CSS 单词折行 word-wrap属性