CH 1601 - 前缀统计 - [字典树模板题]
2024-10-16 01:04:44
题目链接:传送门
描述
给定 $N$ 个字符串 $S_1,S_2,\cdots,S_N$,接下来进行 $M$ 次询问,每次询问给定一个字符串 $T$,求 $S_1 \sim S_N$ 中有多少个字符串是 $T$ 的前缀。输入字符串的总长度不超过 $10^6$,仅包含小写字母。
输入格式
第一行两个整数 $N,M$。接下来 $N$ 行每行一个字符串 $S_i$。接下来 $M$ 行每行一个字符串表示询问。
输出格式
对于每个询问,输出一个整数表示答案
样例输入
3 2
ab
bc
abc
abc
efg
样例输出
2
0
模板(一个最最普通的字典树模板):
namespace Trie
{
const int SIZE=maxn*;
int sz;
struct TrieNode{
int ed;
int nxt[];
}trie[SIZE];
void init()
{
sz=;
memset(trie,,sizeof(trie));
}
void insert(const string& s)
{
int p=;
for(int i=;i<s.size();i++)
{
int ch=s[i]-'a';
if(!trie[p].nxt[ch]) trie[p].nxt[ch]=++sz;
p=trie[p].nxt[ch];
}
trie[p].ed++;
}
int search(const string& s)
{
int p=;
for(int i=;i<s.size();i++)
{
p=trie[p].nxt[s[i]-'a'];
if(!p) return ;
}
return trie[p].ed;
}
};
题解:
字典树板子题,对上面的板子稍作修改即可。
AC代码:
#include<bits/stdc++.h>
using namespace std; namespace Trie
{
const int SIZE=1e6+;
int sz;
struct TrieNode{
int ed;
int nxt[];
}trie[SIZE];
void init()
{
sz=;
memset(trie,,sizeof(trie));
}
void insert(const string& s)
{
int p=;
for(int i=;i<s.size();i++)
{
int ch=s[i]-'a';
if(!trie[p].nxt[ch]) trie[p].nxt[ch]=++sz;
p=trie[p].nxt[ch];
}
trie[p].ed++;
}
int search(const string& s)
{
int res=;
int p=;
for(int i=;i<s.size();i++)
{
p=trie[p].nxt[s[i]-'a'];
res+=trie[p].ed;
if(!p) break;
}
return res;
}
}; int n,m;
string s;
int main()
{
cin>>n>>m;
Trie::init();
for(int i=;i<=n;i++)
{
cin>>s;
Trie::insert(s);
}
for(int i=;i<=m;i++)
{
cin>>s;
cout<<Trie::search(s)<<endl;
}
}
最新文章
- Step by step SQL Server 2012的安装
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】连载导读
- Win32中GDI+应用(三)---Graphics类
- 安装redis,以及python如何引用redis
- Undefined symbols for architecture i386: ";_crc32";, referenced from:——crc链接错误
- MIME协议在邮件中的应用详解
- 分享一个markdownpad2的授权key
- 你有什么理由还不选择阿里云服务器呢--从阿里云发布自研商用关系型数据库POLARDB想到的
- Spring Boot修改启动端口
- 关于thymeleaf th:replace th:include th:insert 的区别
- Alpha冲刺(4/10)——2019.4.26
- js数组和对象相等判断、拷贝详解(结合几个现象讲解引用数据类型的趣事)
- 北京大学Cousera学习笔记--4-计算导论与C语言基础--计算机的基本原理-程序运行的基本原理
- ASP.NET MVC 4 - 上传图片到数据库
- .NET C#获取当前网页地址
- Mysql数据库如何创建用户
- C# 取两个集合的交集\并集\差集
- m2014-architecture-imgserver->;利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
- 错误 1 类,结构或接口成员声明中的标记";=";无效
- 23 DesignPatterns学习笔记:C++语言实现 --- 1.2 AbstractFactory