trie树入门

news2024/11/29 3:48:10

trie树分为普通的trie树和01trie树

两者可以实现成树,很大一部分原因是:只有26个字母和01两种状态,一个结点度数不会太大,而且字符串长度和位数不会很大,更容易存储

普通trie树维护了一堆字符串集合的前缀,insert和query复杂度都是树的深度,最深是字符串长度,因此字符串长度在不是很长的情况下可以用trie树存

01trie树维护了一堆数集合和位表示前缀,insert和query复杂度也是树的深度,最深才二三十(log)

当我们要看一个字符串集合内某个字符串的出现次数时可以用普通trie

当我们看一个数的集合内二进制表示满足某个条件的数的个数可以用01trie

trie树做题步骤:

普通trie树:

  1. 去确定好要维护哪个字符串集合(去哪些字符串里找满足条件的字符串)

  1. 造trie树

01trie树:

  1. 去确定好要维护哪个数字集合(去哪些数里找二进制满足某些条件的数)

  1. 造trie树

来看一些题:

Trie字符串统计

835. Trie字符串统计 - AcWing题库

trie树裸题,直接打板子即可

最大异或对

AcWing 143. 最大异或对 - AcWing

01trie裸题

我们去按位贪心即可,从高位向低位贪心

如果该位能变成1,就变成1,如果不行就只能将就一下(像极了爱情

那么对于第i位我们只需维护第i位前缀的trie树就行,去已经出现过的数的集合里找二进制满足一定条件的数

去遍历trie树,如果该位是1,就期待它为0,否则就期待它为1

[TJOI2010] 阅读理解

P3879 [TJOI2010] 阅读理解 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

本来这题我想直接造N课trie树然后查询,然后发现这样会炸内存

其实只需要按顺序造一棵trie树就行,然后在造的时候记录第i篇短文的所有字符的出现次数(是否出现)

设cnt[p][id]表示第id篇短文第p个位置的字符是否出现

n最多取1e3,每篇短文最多有5e3个字符,因此第一维该设5e6,第二维1e3,这样也会爆内存

但是注意到它的值只会取0和1,因此可以bitset优化

在压位BFS中,也可以用bitset优化时间复杂度和空间复杂度

最长异或路径

P4551 最长异或路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意:

首先它说树上任意两结点的异或距离,这很让人想起树上前缀和

事实上,u和v的异或距离就是sum[u]^sum[v],其中sum数组是该结点到根的前缀异或(因为两个相同的数异或是0)

因此我们只需dfs预处理出树上前缀和,然后以所有结点的sum值作为集合去造trie树,然后查询两个数在集合里的异或最大值就行

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elastic-Job分布式任务调度(4):Elastic-Job高级

1 事件追踪 Elastic-Job-Lite在配置中提供了JobEventConfiguration,支持数据库方式配置,会在数据库中自动创建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG两张表以及若干索引,来记录作业的相关信息。 1.1 修改Elastic-Job配置类 在ElasticJo…

电商人必读:2022中国电商市场发展洞察报告(人群、品类、品牌、玩法).pdf(附下载链接)...

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年12月份热门报告盘点罗振宇2023年跨年演讲PPT原稿吴晓波2022年年终秀演讲PPT原稿《底层逻辑》高清配图华为2021数字化转型:从战略到执行.pdf华为项目管理金种…

如何理解操作系统

路灯很多,希望你找到自己的月亮。 作者:阿润菜菜 目录 操作系统是什么 为什么设计操作系统 理解操作系统的作用 如何理解操作系统对软硬件管理? 操作系统为什么要对软硬件资源进行管理呢? 什么是系统调用和库函数 总结 操…

【docker13】Redis面试题

面试题 问题: 1~2亿条数据需要缓存,请问如何设计这个存储案例? 回答: 单机单台不可能的,肯定是分布式存储(那如何用redis实现呢?) 解决1: 哈希取余分区 优点: 简单粗暴…

项目管理系统的类型

“系统”一词有两个不同的定义:一、定义某事如何完成的原则和程序,二、复杂整体的部分。因此,根据所使用的定义,项目管理系统也可以有两种不同的含义。 第一个是指定义如何执行项目的完整过程和原则系统。此定义包括所有项目管理以…

windows10上安装Python3.11.1

1)下载Python3.11.1 Python官网下载地址:https://www.python.org/ package意思是下载压缩安装包,installer是.exe的安装程序。 根据自己电脑需求选择,这里我选择的是64位 2)安装 双击安装包,进行安装。…

VScode编译调试C++环境

首先去官网下载vscodehttps://code.visualstudio.com/ 为了编译C/C,要使用gcc,Windows本身不支持gcc,所以有了MinGW,我用的是dev带的MinGW,也可以自己安装MinGW,或者用VS的编译器(MinGW gcc下载…

喜报!COSCon'22中国开源年会获评 2022 中国最受开发者欢迎的技术活动

2023 年 1 月 5 日,中国技术先锋年度评选2022 中国最受开发者欢迎的技术活动榜单正式发布。作为中国领先的新一代开发者社区,SegmentFault 思否依托社区活动板块(https://segmentfault.com/events)及全站数百万开发者用户行为数据…

浏览器怎么录制网页视频?3种网页视频录制方法

我们每天都会在浏览器上观看大量的视频,尤其是在爱奇艺、腾讯、哔哩哔哩等网页上。有时候就会观看到一些精彩的视频画面,就想要将这些画面给下载。那怎么把网页视频录制下来?今天本文就给大家分享3种有效的网页视频录制方法,有需要…

Linux 环境使用定时任务执行shell脚本

前言:Linux添加定时任务需要依赖crond服务,如果没有该服务,需要先安装:yum -y install crontabs 1、crond服务相关命令介绍 启动crond服务:service crond start 停止crond服务:service crond stop 重启cro…

【NI Multisim 14.0原理图设计基础——放置元器件】

目录 序言 🍉 一、放置元器件 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI Multisim 14.0,打开如图所示的启动界面,完成初始化后&…

第一行代码Androiod第三版 笔记 第九章丰富你的程序,运用手机多媒体

文章目录前言一、通知渠道是什么?二、快速入门1. 书写通知2.通知有了 ,点击也没动静啊- PendingIntent3 点击完之后,通知不消失怎么办4 通过setStyle() 来是实现长文字通知5 还想放张图6 不同通知之间也有等级差异三、 使用相机7 调用相机8 从…

Linux工具学习之【gcc/g++】

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Whatever is worth doing is worth doing well. 任何值得去做的事情&#xff0…

SpringBoot中使用Swagger详解

在Spring Boot中规范的使用Swagger进行接口测试 文章目录Swagger是什么?为什么要用Swagger?准备工作创建项目编写接口验证高级配置文档注释接口过滤自定义响应SwaggerUI的使用遇到的问题:Swagger是什么? Swagger是一套基于OpenAP…

【Kubernetes 企业项目实战】02、基于 Prometheus 和 K8s 构建智能化监控告警系统(上)

目录 一、Prometheus 基本介绍 二、Prometheus 特点 样本 三、Prometheus 组件介绍 四、Prometheus 工作流程 五、Prometheus 和 zabbix 对比分析 六、Prometheus 的几种部署模式 6.1 基本高可用模式 6.2 基本高可用 远程存储 6.3 基本 HA 远程存储 联邦集群方案…

Word文档内容如何添加双删除线

我们有时需要在Word里面添加双删除线,那么怎么添加呢?看看小编是怎么操作的吧。 首先,运行speedoffice并打开Word文件,选中需要添加双删除线的内容; 然后,点击鼠标右键,在右键菜单中选择“高级…

如何搭建云进销存-采购管理系统?

1、简介 1.1、案例简介 本文将介绍,如何搭建云进销存-采购管理。 1.2、应用场景 云进销存-采购管理应用支持多种商品特性管理,灵活适配不同主流行业商品管理要求,并可通过报表追溯查询,实现差异化的品类管理及分析。 2、设置…

【Linux】-- 进程终止进程等待

目录 深入理解fork 进程终止 进程常见退出场景 退出码 总结 进程等待 进程等待必要性 wait与waitpid 阻塞等待 非阻塞等待 总结 深入理解fork 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为…

Rhce第三次作业

1. 基于同一IP的不同端口访问不同的网站(可以通过域名去访问)ipport1 -> 对应一个域名ipport2 -> 对应一个域名使用域名1我应该访问到 ipport1对应的内容使用域名2我应该访问到 ipport2对应的内容/etc/hosts文件下写入ip和域名,进行域名解析写入192.168.137.1…

vue3学习笔记之TransitionTransitionGroup

文章目录Transition&TransitionGroup动画组件1. Transition1.1 Transition API1.2 基于CSS的过渡效果自定义过渡class Animate动画库同时使用 transition 和 animation深层级过渡与显式过渡时长duration(总持续时间)1.3 JavaScript 钩子 GreenSock…