当前位置: 首页 > news >正文

P8306 【模板】字典树

题目描述

给定 n 个模式串 s1​,s2​,…,sn​ 和 q 次询问,每次询问给定一个文本串 ti​,请回答 s1​∼sn​ 中有多少个字符串 sj​ 满足 ti​ 是 sj​ 的前缀

一个字符串 t 是 s 的前缀当且仅当从 s 的末尾删去若干个(可以为 0 个)连续的字符后与 t 相同。

输入的字符串大小敏感。例如,字符串 Fusu 和字符串 fusu 不同。

输入格式

输入的第一行是一个整数,表示数据组数 T。

对于每组数据,格式如下:
第一行是两个整数,分别表示模式串的个数 n 和询问的个数 q。
接下来 n 行,每行一个字符串,表示一个模式串。
接下来 q 行,每行一个字符串,表示一次询问。

输出格式

按照输入的顺序依次输出各测试数据的答案。
对于每次询问,输出一行一个整数表示答案。

输入输出样例

输入

3
3 3
fusufusu
fusu
anguei
fusu
anguei
kkksc
5 2
fusu
Fusu
AFakeFusu
afakefusu
fusuisnotfake
Fusu
fusu
1 1
998244353
9

输出

2
1
0
1
2
1

做字典树的模版题,先要了解字典树怎么用

比如我们要存储一些单词

cat car busy bus

我们可以建一棵树来存它们,这棵树的根节点为零

对于这道题,我们借助上图弄清思路

在输入模式串的时候,就根据上图的思路,按字符串每一位查找,并且存储

查询的时候,就一步一步在树中找,如果找到叶子结点了,但查询的单词没找完,就说明它不是已出现字符串的前缀,如果找完了字符串,就说明是

#include<bits/stdc++.h>
using namespace std;
const int N=3e6+5;
int t;
int n,m;
int ch[N][124];
int cnt[N];
int idx=0;
void in(string s){int p=0;for(int i=0;i<s.length();i++){int j=int(s[i]);if(!ch[p][j])ch[p][j]=++idx;p=ch[p][j];cnt[p]++;}
}
int out(string s){int p=0;for(int i=0;i<s.length();i++){int j=int(s[i]);if(!ch[p][j])return 0;p=ch[p][j];}return cnt[p];
}
signed main(){scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);string s;for(int i=0;i<=idx;i++){cnt[i]=0;for(int j=0;j<=123;j++){ch[i][j]=0;}}idx=0;for(int i=1;i<=n;i++){cin>>s;in(s);}for(int i=1;i<=m;i++){cin>>s;printf("%d\n",out(s));}}
}

 

http://www.lryc.cn/news/396213.html

相关文章:

  • 面试官:讲一下如何终止一个 Promise 继续执行
  • linux之常见的coredump原因都有哪些
  • 低资源低成本评估大型语言模型(LLMs)
  • 什么是RPC?有哪些RPC框架?
  • HTTP有哪些请求方式?
  • 接口测试课程结构
  • leetcode--从中序与后序遍历序列构造二叉树
  • 西瓜杯CTF(1)
  • Kafka 典型问题与排查以及相关优化
  • C# 策略模式(Strategy Pattern)
  • 【初阶数据结构】1.算法复杂度
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • 科技创新引领水利行业升级:深入分析智慧水利解决方案的核心价值,展望其在未来水资源管理中的重要地位与作用
  • ExcelVBA运用Excel的【条件格式】(三)
  • coco数据集格式计算mAP的python脚本
  • Linux学习——Linux中无法使用ifconfg命令
  • 二分查找3
  • 从零开始学习嵌入式----C语言框架梳理与后期规划
  • ESP32 步进电机精准控制:打造高精度 DIY 写字机器人,实现流畅书写体验
  • 传知代码-图神经网络长对话理解(论文复现)
  • 部署前端项目
  • 使用POI实现Excel文件的读取(超详细)
  • Debezium系列之:记录一次数据库某张表部分数据未同步到hive表的原因
  • 爆破器材期刊
  • Nginx Websocket 协议配置支持
  • 【生成式对抗网络】GANs在数据生成、艺术创作,以及在增强现实和虚拟现实中的应用
  • 大模型面试(三)
  • pycharm中快捷键汇总
  • TCP/IP协议族结构和协议
  • 大模型一些概念的理解 - 线性层、前向传播、后向传播