题目链接:传送门

描述
给定 $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;
}
}

最新文章

  1. Step by step SQL Server 2012的安装
  2. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】连载导读
  3. Win32中GDI+应用(三)---Graphics类
  4. 安装redis,以及python如何引用redis
  5. Undefined symbols for architecture i386: &quot;_crc32&quot;, referenced from:——crc链接错误
  6. MIME协议在邮件中的应用详解
  7. 分享一个markdownpad2的授权key
  8. 你有什么理由还不选择阿里云服务器呢--从阿里云发布自研商用关系型数据库POLARDB想到的
  9. Spring Boot修改启动端口
  10. 关于thymeleaf th:replace th:include th:insert 的区别
  11. Alpha冲刺(4/10)——2019.4.26
  12. js数组和对象相等判断、拷贝详解(结合几个现象讲解引用数据类型的趣事)
  13. 北京大学Cousera学习笔记--4-计算导论与C语言基础--计算机的基本原理-程序运行的基本原理
  14. ASP.NET MVC 4 - 上传图片到数据库
  15. .NET C#获取当前网页地址
  16. Mysql数据库如何创建用户
  17. C# 取两个集合的交集\并集\差集
  18. m2014-architecture-imgserver-&gt;利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
  19. 错误 1 类,结构或接口成员声明中的标记&quot;=&quot;无效
  20. 23 DesignPatterns学习笔记:C++语言实现 --- 1.2 AbstractFactory

热门文章

  1. 11g新特性 -- Virtual Private Catalogs
  2. Sql Server 阻塞的常见原因和解决办法
  3. mariadb(MySql)设置远程访问权限
  4. [转]关于ios 推送功能的终极解决
  5. 【Android】GPS定位基本原理浅析
  6. php 无限分类 树形数据 格式化
  7. python笔记2-数据类型:列表[List]常用操作
  8. CentOS服务器ntpdate同步
  9. mysql按月查询
  10. 使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化