UVA1401 (字典树加简单dp)
- #pragma GCC optimize(2)
- #include <bits/stdc++.h>
- #define ll long long
- using namespace std;
- const int N = 5e5+;
- const int mod=;
- const int sigma_size=;
- int dp[N];
- char str[N];
- char s[];
- struct Trie{
- int ch[N][sigma_size];
- int val[N];
- int sz;
- Trie(){sz=;memset(ch[],,sizeof(ch[]));}
- int idx(char c) {return c-'a';}
- void reset(){memset(ch,,sizeof(ch));memset(val,,sizeof(val));sz=;}
- void insert(char *s,int v)
- {
- int u=,n=strlen(s);
- for(int i=;i<n;i++)
- {
- int c=idx(s[i]);
- if(!ch[u][c])
- {
- memset(ch[sz],,sizeof(ch[sz]));
- val[sz]=;
- ch[u][c]=sz++;
- }
- u=ch[u][c];
- }
- val[u]=v;
- }
- int query(char *s,int a)
- {
- int u=,res=;
- for(int i=a;s[i];++i)
- {
- int c=idx(s[i]);
- if(!ch[u][c])
- return res;
- u=ch[u][c];
- if(val[u])
- {
- res+=dp[i+];
- res%=mod;
- }
- }
- return res;
- }
- };
- Trie T;
- int main()
- {
- int kase=;
- while(scanf("%s",str)!=EOF)
- {
- int n,m=strlen(str);
- scanf("%d",&n);
- T.reset();
- memset(dp,,sizeof(dp));
- for(int i=;i<=n;i++)
- {
- scanf("%s",s);
- T.insert(s,);
- }
- dp[m]=;
- for(int i=m-;i>=;i--)
- {
- dp[i]=T.query(str,i);
- }
- printf("Case %d: %d\n",++kase,dp[]);
- }
- return ;
- }
UVA1401 (字典树加简单dp)的更多相关文章
- LA、Remember the Word (字典树, 简单dp)
传送门 题意: 给你一个初始串 S,strlen(s) <= 3e5 然后给你 n 个单词. n <= 4000, 每个单词的长度不超过 100 : 问你这个初始串,分割成若干个单词的 ...
- hdu 3698 Let the light guide us(线段树优化&简单DP)
Let the light guide us Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 62768/32768 K (Java/O ...
- Uva1401(字典树)
1401 - Remember the Word Time limit: 3.000 seconds Neal is very curious about combinatorial problems ...
- LA_3942 LA_4670 从字典树到AC自动机
首先看第一题,一道DP+字典树的题目,具体中文题意和题解见训练指南209页. 初看这题模型还很难想,看过蓝书提示之后发现,这实际上是一个标准DP题目:通过数组来储存后缀节点的出现次数.也就是用一颗字典 ...
- poj 1056 IMMEDIATE DECODABILITY 字典树
题目链接:http://poj.org/problem?id=1056 思路: 字典树的简单应用,就是判断当前所有的单词中有木有一个是另一个的前缀,直接套用模板再在Tire定义中加一个bool类型的变 ...
- CF Watto and Mechanism (字典树+深搜)
Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- HDU-1251 统计难题(我就是不用字典树)
统计难题 ?戳这里可以前往原题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为 ...
- 字典树基础进阶全掌握(Trie树、01字典树、后缀自动机、AC自动机)
字典树 概述 字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它 ...
- UVA1401 Remember the Word 字典树维护dp
题目链接:https://vjudge.net/problem/UVA-1401 题目: Neal is very curious about combinatorial problems, and ...
随机推荐
- 构建ROP链实现远程栈溢出
通常情况下栈溢出可能造成的后果有两种,一类是本地提权另一类则是远程执行任意命令,通常C/C++并没有提供智能化检查用户输入是否合法的功能,同时程序编写人员在编写代码时也很难始终检查栈是否会发生溢出,这 ...
- qt creator源码全方面分析(2-10-1)
目录 Getting and Building Qt Creator 获取Qt 获取和构建Qt Creator Getting and Building Qt Creator 待办事项:应该对此进行扩 ...
- pytorch之 CNN
# library # standard library import os # third-party library import torch import torch.nn as nn impo ...
- Digital Twin 数字孪生
GE的一个NB视频:http://v.youku.com/v_show/id_XMjk0NTMzODIyNA==.html http://www.gongkong.com/news/201701/35 ...
- NOIP幂次方
#include<stdio.h> ] = { ,,,,,,,,,,,,,,, };//由题意n最大为20000,所以最多会用到2的14次方 //为了防止mid+1出错,故写到15次方 i ...
- matplotlib如何显示中文
问题:matplotlib不能渲染中文 想设定为中文字体,网上搜索的方法几乎都是下面这样,已经把字体拷贝到了程序目录下了,然而并没有生效 plt.rcParams [ font.sans-serif' ...
- css position absolute相对于父元素的设置方式
手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 大家知道css的position abs ...
- package包
为什么需要package? 为了解决类之间的重名问题.为了方便管理类,合适的类放在合适的包. 怎么用package? 通常是类的第一句非注释性语句. 包名,域名倒着写,加上模块名,并与内部管理类. 命 ...
- sublime3 快捷键总结
配置环境:win7 sublime3 1,快速html5模板页(已安装Emmet插件) 输入html:5后,然后 ctrl+e 2,快速复制 ctrl+shift+d 复制光标所在当前行 3,向上/向 ...
- 【STM32H7教程】第61章 STM32H7的MDMA基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第61章 STM32H7的MDMA基础知识和HAL ...