【数据结构】 字典树trie详解

news/2025/2/7 0:05:56/文章来源:https://www.cnblogs.com/ZYStream/p/18584985

定义:

将多个字符串以树的方式存储即为字典树,如图,\(1,4,3,12\) 表示 \(cca\) ,我么用 \(ch[i][j]\) 来表示第 \(i\) 个节点的 \(j\) 字符所指向的下一个节点,\(tag[u]\) 表示节点 \(u\) 是否代表一个字符串的结尾,如果是的话,\(tag[u]=1\)

模板CODE

添加字符串

//n表示即将要向字典树插入n个字符串
const N 100005;
scanf("%d",&n);for (int i=1;i<=n;i++){char s[N];scanf("%s",s+1);int u=1;for (int j=1;s[j];j++){int c=s[j]-'a';if (!ch[u][c]) ch[u][c]=++tot;u=ch[u][c];}tag[u]=1;}

字符串查找

//查看字符串s是否在字典树当中,如果在输出OK,否则输出WRONG
char s[N];
scanf("%s",s+1);int u=1;for (int i=1;s[i];i++){int c=s[i]-'a';u=ch[u][c];if (!u) break;}if (tag[u]==1){puts("OK");continue;}else {puts("WRONG");continue;}

例题

(P2580 于是他错误的点名开始了)[https://www.luogu.com.cn/problem/P2580]

维护异或极值

待补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846302.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五款实用报表工具对比推荐,各种免费好用的报表工具等你来试

概述 报表工具是企业进行数据分析、展示和决策支持的核心工具之一。本文将为大家介绍五款各具特色的报表工具,包括国产的山海鲸报表、FineReport,以及国际工具Databox、Pentaho Reporting和Zoho Analytics。通过详细分析它们的功能特点、优势和不足,帮助大家根据自身需求选择…

H5-24 CSS盒子模型(Box Model)

1、概念:所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用CSS盒模型本质上是一个盒子,封装周围的元素HTML元素,它包括:外边距(margin),边框(border),内边距(padding),和实际内容(content) Margin(外边距):清楚边框外…

Logisim-022-☆16位快速加法器

电路文件所在 电路/3-data.circ 中的 ☆32位快速加法器仓库地址 https://gitee.com/gitliang/logisim-to-cpu

P11233 [CSP-S 2024] 染色 题解

我们设 \(dp_{x,y}\) 表示上一个红色是 \(x\),上一个蓝色是 \(y\) 时最大的价值。 容易发现转移为 \(dp_{a_i,x}=\max\limits_{j=1}^k dp_{k,x}+[k=a_i]a_i,dp_{x,a_i}=\max\limits_{j=1}^k dp_{x,k}+[k=a_i]a_i\)。其中 \(k\) 是值域。 容易发现,转移完后的 \(dp\) 数组中有…

Sybaris pg walkthrough Intermediate

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.166.93 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-03 01:12 UTC Nmap scan report for 192.168.166.93 Host is up (0.071s latency). Not shown: 65519 filtered tcp ports (no-response) PORT …

H5-23 关系选择器

关系选择器分为:后代选择器、子代选择器、相邻兄弟选择器、通用兄弟选择器 1、后低选择器定义:选择所有被E元素包含的F元素,中间用空格隔开语法:E F {}<ul><li>1</li><li>2</li><li>3</li></ul>   <ol><li>…

【DL】YOLOv8模型中的train.py

YOLOv8项目中有两个地方可以执行train.py 最外层的train.py(现在想起来这里好像是我自己写的训练脚本,原项目里没有)YOLO()构造函数默认构造的是目标检测的模型,也可以在方法的参数中指定task类型 models/yolo中的train.py这里的每个文件夹中定义了相对应任务中的训练脚本在…

获取剪切板的图片 - File - Base64 - Blob - url - Image,以及它们之间的各种相互转换

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 一、获取剪切板的图片(拿到 File 对象) js粘贴事件paste简单解析及遇到的坑 - 云+社区 - 腾讯云 (tencent.com)document.addEventListener(paste, function(event) {let items = event.clipboardData && event…

k8s阶段05 Operator, DaemonSet, Job, CronJob, Ingress和Ingress Controller(蓝绿/恢复发布), helm

StatefulSet:编排有状态应用基本要求:需要给每个实例惟一且固定的标识,依赖于一个专用的Headless Service; 需要给每个实例一个专用的PVC卷,该卷要来自volumeTemplateClaim,卷的标识 “template_name-pod_name”;Pod Management Policy: OrderedReady:按顺序,依次Para…

单表增删改查

学习前,请先搞定数据库的驱动和连接,具体看黑马课程《java web》。 idea 先配置好Tomcat才可以进行,具体可以在CSDN上找教程 差旅费的简单单表增删改查 以下是数据库以下是控制台代码。 其中部分代码看不懂的话,可以在B站中《JAVA JDBC》中搞定 其中数据库的操作因人而异,…

JDBC连接数据库实现增删改查前端交互

实现交互最终要的是这个web.xml,其实我们新版本已经可以直接使用@这个CourseSevlet是前后端实现交互的映射,只有这个东西配置好了,才能实现前后端的交互,前端界面随便写写就行,主要就是那个意思

VScode中配置 C/C++ 环境

## VScode中配置 C/C++ 环境 1. 下载编译器MinGW并解压官网页面:https://www.mingw-w64.org/下载页面:https://sourceforge.net/projects/mingw-w64/files/下载页面中选择 x86_64-win32-seh 下载(目前已经更新,页面中没有,需要找很麻烦)MinGW直接下载地址 https://wwn.la…