CF786D

news/2025/2/10 18:54:21/文章来源:https://www.cnblogs.com/QZJ666/p/18708583

首先考虑怎么比较树上两个点对 \(x1,y1,x2,y2\)\(str(x1,y1),str(x2,y2)\) 的大小关系,我们可以找到这两个串的 LCP 后比较下一个字符的大小关系,找两个串的 LCP 可以直接二分答案然后算出哈希值看是否相等,单次比较是 \(O({\log n}^2)\) 的。

我们使用点分治,假设当前分治中心为 \(C\),当我们计算点对 \(x,y\) 的答案时,考虑怎么计算和 \(x\) 不在 \(C\) 的同一个子树里的点的答案。对于不在一个子树里的点 \(k\),我们将 \(str(x,k)\) 分为 \(str(x,C)+str(C,k)\),那么如果 \(str(x,y)\) 中和 \(str(x,C)\) 长度相等的一段就可以分出胜负,那么发现这些点要么都可以要么都不可以,否则 \(str(x,y)\)\(str(x,C)\) 的 LCP 一定超过 \(str(x,C)\) 的长度,所以我们将 \(x\)\(y\) 的方向跳 \(str(x,C)\) 的长度步,假设跳到了点 \(z\),那么问题就变成了有多少个 \(str(C,k)\) 字典序小于 \(str(z,y)\),很容易想到可以建出字典树然后在上面直接每次沿着 \(str(z,y)\) 的方向往下面跳,然后统计左边有多少个点。这个东西肯定会超时,不过我们发现可以先预处理出跳到字典树上每个点时一路上左边的点数,然后二分出第一个能完整出现在字典树上的前缀,剩下的就只需要枚举小于这个前缀后面一位的所有点数,这一个过程是 \(O(\log^2+c)\) 的,其中 \(c\) 为字符集大小。

感觉这个部分说的有点抽象,画一个图感受一下。

这是一颗字典树,假设此时我们要查询有多少个串是小于 \(\texttt{bebc}\) 这个串的,然后我们会先跳到节点 \(5\) 上,因为这是最长的出现在字典树上的前缀,然后答案会加上预处理出的 \(3\),分别是串 \(\texttt{a}\)\(\texttt{b}\) 以及 \(\texttt{bc}\),因为这些是小于从根到节点 \(5\) 的路径的总数,这个东西在字典树上 DFS 一遍即可预处理出。然后之后我们枚举节点 \(5\) 经过比下一个字符小的边可以到的点,然后答案就会加上 \(2\),分别是串 \(\texttt{be}\)\(\texttt{bea}\),这样子就可以在 \(O(\log n^2+c)\) 的复杂度内算出答案。

最后套上点分治,总时间复杂度就是 \(O((n+q){\log n}^3)\) 的。

又臭又长的代码。

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

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

相关文章

男人八题-点分治-Acwing252.树

Acwing252.树题目分析 树中的路径分为三种路径两端在同一个子树 路径两端在不同子树 路径有一端是重心因此可以分情况处理, 对于第一种情况可以进行递归处理, 第二种情况需要使用容斥原理求得(下面重点介绍), 第三种情况枚举重心到其他节点的路径就可以求得 代码分析 求子树大小…

【验证码逆向专栏】最新某验四代动态参数逆向详解

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术…

DeepSeek:AI界的“东方海啸”

嘿,大家有没有听说过DeepSeek?这个AI界的新星正在掀起一场“东方海啸”!让我们一起来看看它是如何改变游戏规则的。 一、技术革新:从参数到生态 想象一下,一个AI模型的参数从2360亿飙升到6710亿,训练成本却只有557.6万美元!这就是DeepSeek的魔力。你觉得这有多疯狂? 他…

007 数组扩展_新增方法

1、Array.from()Array.from方法用于将数组转为真正的数组温馨提示:常见的类数组有三类:①arguments②元素集合③类似数组的对象①argumentsfunction add(){let collect =Array.from(arguments);collect.push(40);console.log(collect);}add(10,20,30)②元素集合let divs=docu…

360度绩效考核法实例分析

某公司打算在2025年的上半年引进360度绩效考核体系,于是公司管理者就命令人力资源部制定出相应的考核体系实施方案。人力资源部根据360度绩效考核体系实施要点,并结合本公司内部实际情况,制定出了一套适用于本公司的360度绩效考核体系,具体内容如下: (一)确定考核队伍 考…

idea 远程断点

jar启动命令添加以下命令 0.0.0.0:端口号 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005idea中新增远程jvm调试

Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代

在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南…

1次搞懂大模型备案被驳回原因!

大模型备案被驳回的原因一、语料安全不合规 1、语料来源未合法授权 语料需确保来源合法,包括开源协议、商业授权或自采数据的合规性。若语料中包含未授权的版权内容(如使用他人知识产权作品作为训练数据),或涉及未获授权的个人信息,将直接导致备案被驳回。 示例:某企业因…

内外网安全文件交换系统:突破网络屏障,筑牢数据安全防线

内外网安全文件交换系统:突破网络屏障,筑牢数据安全防线在数字化浪潮蓬勃发展的当下,企业对于数据安全保障以及高效文件传输机制的需求日益凸显。特别是在内外网实施物理隔离的网络架构下,如何达成安全、便捷的文件交换操作,已然成为众多企业亟待攻克的关键难题。本内外网…

利用排列序列提升游戏动画的真实感

在游戏开发中,我们经常需要处理重复的动画序列,以增加游戏的真实感。例如,在海战游戏中,我们可能会有一组军舰停泊在港湾,它们的桅杆或甲板时不时地需要摇晃,以模拟海风的影响。实现这种效果有多种方法,例如完全随机选择某艘军舰播放动画,或者按照固定的顺序依次播放。…

最小表示(字符串和树)学习笔记

字符串的最小表示法 由来 字符串有时需要进行“旋转”,即一个一个把尾部元素放到前面。那么,我们怎么知道一个字符串是不是另一个字符串旋转过来的呢? 我们发现,这种旋转其实相当于把字符串首尾相接成环,然后取不同的起点重新组成字符串。在这些能够组成的字符串中,字典序…

破解风电远程监控难题:EtherNet/IP转Modbus TCP配置大揭秘

EtherNet/IP转Modbus TCP在新能源风力发电场远程监控与数据分析的配置案例一、案例背景 在风力发电场的中控室安装捷米特JM-EIPM-TCP网关,连接到风电场的局域网。确保风力发电机组的控制系统、变流器等采用 MODBUS TCP 协议的设备以及基于 EtherNet/IP 协议的远程监控系统和数…