【Trie】L 语言
【题目链接】:
【题意】:
给出n个模式串。请问文本串是由多少个模式串组成的。
【题解】:
当我学完AC自动机后,发现这个题目也太简单了吧.
不过当时我还是不会,后来看了看洛谷有位大佬的题解。
简直醍醐灌顶。纯Trie树也能写出这个题来。
就是把对应的位置标记上,好比dp的转移。
这个转移是,开一个Mark数组,看看文本串中哪个位置能通过这些模式串匹配出来的。
然后一直转移即可。
【代码】:
//L语言
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 3e4 ;
const int M = 3e4 * ;
const int LEN = 2e6;
int Son[M][],idx;
bool cnt[M];
bool Mark[LEN];
char s[LEN];
int n,m;
void Insert(){
int p = ;
for(int i=;s[i];i++){
int t = s[i]-'a';
if( !Son[p][t] ) Son[p][t] = ++idx;
p = Son[p][t];
}
cnt[p] = true;
}
void Query(){
memset( Mark , false , sizeof Mark );
int p = ;
for(int i=;s[i];i++){
int t = s[i] - 'a';
if ( !Son[p][t] ) break;
p = Son[p][t];
if( cnt[p] ) Mark[i] = true;
} int ans = ;
for(int i= ; s[i] ; i++ ){
if( !Mark[i] ) continue;
else ans = i+ ;
p = ;
for(int j=i+;s[j];j++){
int t = s[j] - 'a';
if ( !Son[p][t] ) break;
p = Son[p][t];
if( cnt[p] ) Mark[j] = true;
}
}
printf("%d\n",ans);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%s",s);
Insert();
}
for(int i=;i<m;i++){
scanf("%s",s);
Query();
}
return ;
}
【Trie】L 语言的更多相关文章
- 【BZOJ1212】[HNOI2004]L语言 Trie树
[BZOJ1212][HNOI2004]L语言 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构 ...
- BZOJ 1212: [HNOI2004]L语言( dp + trie )
因为单词很短...用trie然后每次dp暴力查找...用哈希+dp应该也是可以的.... ------------------------------------------------------- ...
- 洛谷:P2292 [HNOI2004]L语言(DP+Trie树)
P2292 [HNOI2004]L语言 题目链接:https://www.luogu.org/problemnew/show/P2292 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有 ...
- Luogu P2292 [HNOI2004]L语言(Trie+dp)
P2292 [HNOI2004]L语言 题面 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章 \(T\) 是由若干小写字母构成. ...
- 2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机)
2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机) https://www.luogu.com.cn/problem/P2292 题意: 标点符号的出现晚于文字的出 ...
- BZOJ 1212: [HNOI2004]L语言 [AC自动机 DP]
1212: [HNOI2004]L语言 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1367 Solved: 598[Submit][Status ...
- [HNOI2004]Language L语言
2777: [HNOI2004]Language L语言 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 10 Solved: 5[Submit][S ...
- 「HNOI2004」「LuoguP2292」L语言(AC自动机
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- 洛谷(cogs 1293/bzoj 1212) P2292 [HNOI2004]L语言
1293. [HNOI2004] L语言 ★★★ 输入文件:language.in 输出文件:language.out 简单对比时间限制:1 s 内存限制:162 MB [题目描述] ...
随机推荐
- root of context hierarchy
Spring Boot项目,运行不明中断.日志如下: 2018-11-03 11:03:43.358 INFO [Thread-2][AbstractApplicationContext.java:9 ...
- ICEM—二维混合网格对齐节点
原视频下载地址: https://pan.baidu.com/s/1bpnjfT9 密码: jeuv
- adb的一些命令
adb pull <手机路径> <本机路径> 从手机中拉取信息到本地电脑上 adb push <本机路径> <手机路径> 从本地电脑推送信息到手机上
- MISS YOU
文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- TPCH测试工具
TPC现有的测试标准为:TPC-E.TPC-C.TPC-H.TPC-App.根据这4个测试基准,目前TPC主要包括的4个技术小组委员会:TPC-E 技术小组委员会.TPC-C 技术小组委员会.TPC- ...
- 前端知识点回顾——koa和模板引擎
koa 基于Node.js的web框架,koa1只兼容ES5,koa2兼容ES6及以后. const Koa = requier("koa"); const koa = new K ...
- centos出现磁盘坏道,怎么检索和修复
故障现象,在/var/log/message这个目录中出现下面的error: [ [ [ [ [ [ [ [ [ [ dmesg的输出结果也是上面的error. 1.检测下坏道,将结果保存在bb.lo ...
- wan口的ip是干什么用的
wan口的ip是外网的ip,属于公网的ip.主要用于外网的识别,WAN口主要用于连接外部网络,如ADSL.DDN.以太网等各种接入线路:而LAN口用来连接家庭内部网络,主要与家庭网络中的交换机.集线器 ...
- socket常见问题
socket编程中主动关闭VS被动关闭 tcp中server,client都可能是主动关闭方或者被动关闭方,现阐述下两者之间的关系: 客户端(client) ...
- 大数据(2)---HDFS集群搭建
一.准备工作 1.准备几台机器,我这里使用VMware准备了四台机器,一个name node,三个data node. VMware安装虚拟机:https://www.cnblogs.com/niju ...