【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 [题目描述] ...
随机推荐
- C语言指针方法对字符串进行去重
自己编写了3种方法,都是使用指针的.(在LR中编写的) 1.先在原字符串进行比较,然后再放入目标字符串 Action() { char *srt="aadfeedeewwffggecccew ...
- ICEM-五通孔管
原视频下载地址:https://yunpan.cn/cqaQ2t5DrRcKa 访问密码 d111
- Flutter路由跳转父级页面向子页面传参及子页面向父级页面传参
Flutter中页面通过路由跳转传参主要分两种,一种是通过push()跳转时根据设定的参数进行传参,另一种是通过pop()返回时进行传参. 父级页面向子页面push()传参 假设从A页面跳到B页面可能 ...
- mysql -- 清空表中数据
删除表信息的方式有两种 :truncate table table_name;delete * from table_name;注 : truncate操作中的table可以省略,delete操作中的 ...
- 通过Vagrant搭建PHP环境(一) Vagrant box添加配置
系统Windows10 Vagrant 1.8.1 VirtualBox 5.0.20 vagrant box下载地址:http://cloud.centos.org/centos/7/vagrant ...
- (八)爬虫之js调试(登陆知乎)
上次爬取网易云音乐,折腾js调试了好久,难受....今天继续练练手,研究下知乎登陆,让痛苦更猛烈些. 1.简单分析 很容易就发现登陆的url=“https://www.zhihu.com/api/v3 ...
- ES6深入浅出-1 新版变量声明:let 和 const-1.视频 概述
es7语法比较少,只占了一点点 ES 6 新特性一览:https://frankfang.github.io/es-6-tutorials/ 我用了两个月的时间才理解 let https://zh ...
- Apache损坏无法使用怎么办
已经 find / -name httpd | xargs rm -rf删光了httpd相关文件,但是使用yum install httpd 无法正常安装. 查看Httpd的状态是 解决办法: yum ...
- CentOS下Hadoop及ZooKeeper环境搭建
1. 测试环境 操作系统 CentOS 6.5. 总共5台机器,前两台作为namenode,称之为 nn01.nn02:后三台作为datanode,称为 dn01.dn02.dn03. 每台机器的内存 ...
- supervieord的使用
用途 守护进程,帮你管理其他进程,让其他进程成为后台进程 监控进程是否死掉,自动重启: 管理进程的启动,停止: 对进程输出的日志进行管理 每个进程使用不同的用户启动,这样可以使进程获得不同用户的权限 ...