非线性字符串数据结构串讲
书接去年今天作业不想写了滚过来写总结。顺便保留我刚略微学会的串串。声明作者由于水平不高所以有些定理不能严谨证明所以若是初学者请移步别处。1.Trie树定义Trie树又叫字典树是非常显然的一种字符串数据结构。具体来说我们如果手上有很多字符串我们可以通过建一个Trie树来做一些简单的操作。其构建过程可以看一下图非常显然本质就是把字符串的相同部分压缩一下。比如我们对aa aba ba caaa cab cba cc建一个Trie就长这样。构建图来自OI wiki然后构建这块也挺简单的代码int len,idx,cnt[N],tr[N][70]; ll getid(char c){ if(cAcZ) return c-A; else if(cacz) return c-a26; else return c-052; } void add(string s){ lens.size(); s s; int p0; for(int i1;ilen;i){ int idgetid(s[i]); if(!tr[p][id]) tr[p][id]idx; ptr[p][id]; cnt[p]; } } ll ask(string s){ lens.size(); s s; int p0; for(int i1;ilen;i){ int idgetid(s[i]); if(!tr[p][id]) return 0; ptr[p][id]; } return cnt[p]; }空间这块最坏情况每个字符串的每个字符都要新开一个节点所以空间开即可。上一道例题AT_arc219_a [ARC219A] SimilarityAT_arc219_a [ARC219A] Similarity正难则反这个比较困难所以就把S串01翻转那么就是找出一个串串使得不能与任何一个S串相同。那你给这些反串建出Trie后找一个还没有被经过的节点即可。例题结束与异或相关其实我们的Trie树不只能在字符串上用因为在我们眼里数是有二进制的二进制我们就可以想到01串。我们就可以把数字当做01串建Trie树当我们遇到一些神秘有关异或的题目时我们一想Trie树二想线性基比如来道题给定你一个序列和x值让你从这个序列中选一个元素使之其与x的异或值最大。考虑异或的性质二进制位上不同为一相同为0。所以我们对序列建Trie树把给定的x二进制分解从高往低位的贪心的尽可能与x当前位不同。就行了。来一道有意思的应用P5283 [十二省联考 2019] 异或粽子题解2.AC自动机AC自动机由两部分构成Trie树和fail树。AC自动机的本质上就是建出Trie树后连fail边。这里我们给出fail边的定义。在Trie树上,每一个节点表示一个字符串。fail边指向这个节点所代表的字符串 最长的后缀 所代表的节点。example图来自OI wiki比如这个Trie树给他建fail边就应该是这样的由于根节点代表的是空串空串是任何字符串的后缀。所以当你实在在Trie树上找不到后缀时就直接无脑连根结点

相关新闻

Lemos知识库-AI+知识图谱驱动智能脑进化

Lemos知识库-AI+知识图谱驱动智能脑进化

Lemos 通过其“AI知识图谱”双引擎,将传统的静态知识库转变为动态智能脑,其核心转变体现在知识单元、组织逻辑、构建方式、交互模式、演化能力及最终目标六个层面。 转变维度传统静态知识库 (以Ima为例)Lemos 动态智能脑实现转变的关键机制知识单元原子…

2026/7/6 2:47:55 阅读更多 →
2026年实用指南3个复习笔记使用场景选择标准帮你精准适配需求

2026年实用指南3个复习笔记使用场景选择标准帮你精准适配需求

"这篇就是给只会把复习笔记当抄板书草稿本的学生,整理了2026年实用的3个复习笔记使用场景选择标准,精准对应学生最常用的课堂复习、论文调研、知识自测三类需求,解决大家只会用基础功能、记了白记复习低效的痛点,每一个标准都…

2026/7/6 2:47:54 阅读更多 →
H5跳转应用商店兼容性实战:覆盖10+主流安卓市场与iOS的JS代码库

H5跳转应用商店兼容性实战:覆盖10+主流安卓市场与iOS的JS代码库

H5跳转应用商店兼容性实战:覆盖10主流安卓市场与iOS的JS代码库在移动互联网时代,H5页面作为轻量级入口,承担着用户增长和流量分发的重要职责。然而,当需要引导用户从H5页面跳转到原生应用商店时,开发者往往面临设备检测…

2026/7/6 2:43:53 阅读更多 →

最新新闻

LB200倒置显微镜在梅毒螺旋体体外培养观察中的解决方案

LB200倒置显微镜在梅毒螺旋体体外培养观察中的解决方案

LB200倒置显微镜在梅毒螺旋体体外培养观察中的解决方案 梅毒螺旋体体外培养:微观世界的艰难跋涉 梅毒螺旋体是一种难以在体外环境中生存和繁殖的特殊病原体。其体外培养面临着很高的技术挑战,需要精确模拟人体内的复杂环境。在这一过程中,对培…

2026/7/6 3:38:09 阅读更多 →
PCB布局3大常见误区解析:从BGA阴影效应到40mil间距的工程取舍

PCB布局3大常见误区解析:从BGA阴影效应到40mil间距的工程取舍

PCB布局3大常见误区解析:从BGA阴影效应到40mil间距的工程取舍在硬件工程师的日常工作中,PCB布局往往是最容易被低估却又最影响最终产品性能的环节。许多初学者在完成原理图设计后,常常迫不及待地将元器件"塞"进电路板,却…

2026/7/6 3:38:09 阅读更多 →
从信息检索到语义推荐:GEO的技术演进逻辑与越华云图陪跑方案

从信息检索到语义推荐:GEO的技术演进逻辑与越华云图陪跑方案

一、技术背景:搜索范式的迁移 信息获取方式正在经历第三次范式转移:阶段核心机制用户行为品牌优化目标Web 1.0(门户时代)编辑推荐被动浏览出现在门户网站Web 2.0(搜索时代)关键词检索主动搜索点击SEO排名优…

2026/7/6 3:36:07 阅读更多 →
LangChain Agent 开发第一天:先把最小 Demo 跑起来

LangChain Agent 开发第一天:先把最小 Demo 跑起来

今天先不讲复杂概念,也不急着做完整项目。 第一天的目标很简单:创建一个 LangChain Agent 项目,配置好模型接口,并跑通一个最基础的 Agent 示例。 只要这一步能跑通,后面再加工具、记忆、工作流、前端页面&#xff0…

2026/7/6 3:32:06 阅读更多 →
用《白鲸记》测试生产力应用:处理长文能力是关键?

用《白鲸记》测试生产力应用:处理长文能力是关键?

《白鲸记》:生产力应用的测试利器 待办事项列表应处理多少项内容虽非紧迫问题,但作者常思考生产力应用处理“用户生成”内容的能力。作者选择用《白鲸记》测试应用,因其篇幅长、用词复杂,若应用处理《白鲸记》表现良好&#xff0c…

2026/7/6 3:30:05 阅读更多 →
AI应用落地四板斧:场景闭环、数据可得、人机协同、交付确定

AI应用落地四板斧:场景闭环、数据可得、人机协同、交付确定

1. 项目概述:这不是发布会PPT,而是一份AI应用落地的实操路线图“腾讯智能体全景图亮相,汤道生解密打造AI应用四板斧”——这个标题乍看是科技媒体通稿的典型句式,但如果你在2023—2024年深度参与过至少两个中型以上AI项目落地&…

2026/7/6 3:30:05 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻