trie 树
基本操作
顾名思义, 树就像字典一样,是一种多串状态的集合表现
处理字母
处理字母的关键在于每个串结束处的处理,常见的有开 ,节点上的 (虽然可能更多的是在 自动机上)
考虑 树上的 , 表示走到节点 ,匹配到模式串 可不可行
模式串如果为字母,直接进对应儿子
如果为 ,进所有儿子
如果为 ,进所有儿子且模式串不延伸,或只模式串延伸
一个比较神奇的套路,对于字符的大小关系,体现于建图
首先枚举假定哪个串是最小的,然后字典树跟着扫一遍,可以对应出许多大小关系,然后建出有向图,跑一遍拓扑判环即可,或许比较像差分约束?
第一次见随机数据干这用……
由于数据随机, 较短,只存后缀前 个即可
考虑计算,对于每一个右端点,记录所有长度的 最右左端点,暴力跳即可
处理数字
按位建立 树,甚至可以很大程度上代替平衡树(除了区间翻转)
一般套路是让求最大异或,往相反的儿子走即可
一个经典套路是如果求区间异或和,转化为前缀和的单点匹配
先求前缀和,由于前后不好区分,那么以点对考虑,即先把限制乘 ,然后重复计算
一个很妙的方法是由于单调性,所以把每个点的最大价值放进堆里,每次求的第 的 加 即可
重点来实现全局加一操作
考虑一个数加一的本质,为最后若干个变零,第一个零变1
那么我们从低位到高位建立 树,那么全局加一操作变为交换左右子树,并对零子树继续这个操作
一些坑点:
- 一定要把 初值设为
- 01 要从高位开始,左移 ,用 保存或者改成右移
- 一个关键点的贡献算完后考虑是否清空
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效