首页 > 其他分享 >sol CF587F AC 自动机 根号分治

sol CF587F AC 自动机 根号分治

时间:2024-02-27 09:23:33浏览次数:24  
标签:AC trie dfrac 分治 sol 自动机 根号

注意下文中 fail 树和 trie 树的不同。

考虑给询问离线,然后差分成 \([1,r]-[1,l-1]\) 的前缀询问来做。

先对于 \(s_{1\dots n}\) 建立 AC 自动机。从左到右扫描询问,当扫描到 \(i\) 时就对 fail 树上的子树 \(i\) 全体 \(+1\),使用树状数组维护即可。

答案即为 \(s_k\) 在 trie 树里链上的点权和。但是每次扫一遍链代价太大。注意到对于所有 \(s_k\),其在 trie 树上的链是固定的,又有长度和固定的性质,不妨考虑根号分治。

  • 当 \(|s_k|\leq B\),直接暴力扫链即可。

  • 当 \(|s_k|>B\),注意到长度和固定最多有 \(\dfrac{n}{B}\) 个这种串,不妨直接预处理出所有的链,每次子树加时对每个串算贡献。

得到了时间复杂度 \(O(nB\log n+\dfrac{n^2}{B})\),空间复杂度 \(O(\dfrac{n^2}{B})\)。由于这个 log 是树状数组的,所以没有什么优化的必要。

Code

总结:长度和固定(或是维护出现次数这种经典的问题),且数据不好维护的情况下可以考虑根号分治。

标签:AC,trie,dfrac,分治,sol,自动机,根号
From: https://www.cnblogs.com/kxwenorz/p/18036151

相关文章

  • 根号分治与莫队算法
    1.根号分治与分块在预处理与询问的复杂度之间寻找平衡的一个算法,通常以根号为分界线。属于智慧的暴力。1.1.根号平衡使用数学不等式对于阈值取一个值,使得复杂度最优。如果有阈值\(B\),若问题有一部分暴力可以\(O(B)\)解决,另一部分可以\(O(\frac{n}{B})\)解决。那么根据基......
  • P1653 [USACO04DEC] Cow Ski Area G
    原题链接题解非常抽象的缩点大概思路:搜索缩点成有向图,求该点的入度和出度,最后答案一定是\(max(in,out)\)总之很抽象code#definelllonglong#include<bits/stdc++.h>usingnamespacestd;inlinevoidread(ll&x){x=0;llflag=1;charc=getcha......
  • 如何计算两个正太分布的KL散度 —— 正太分布的KL散度 (Kullback-Leibler divergence)
    参考:https://blog.csdn.net/int_main_Roland/article/details/124650909给出实现代码:defget_kl():mean0,log_std0,std0=policy_net(Variable(states))mean1=Variable(mean0.data)log_std1=Variable(log_std0.data)std1......
  • Nacos集群使用docker构建和部署
    使用Dockers部署Nacos集群前置条件:已经安装docker已经有Mysql服务保存Nacos配置数据DockerSwarm集群已经初始化[root@swarmnacos]#dockernodelsIDHOSTNAMESTATUSAVAILABILITYMANAGERSTATUSENGINEVERSIONlbrj......
  • isaac sim 文档翻译
    目录4.1.HelloWorld4.1.1.LearningObjectives4.1.2.GettingStarted4.1.3.CodeOverview4.1.3.1.SingletonWorld4.1.4.AddingtotheScene4.1.5.InspectingObjectProperties4.1.5.1.ContinuouslyInspectingtheObjectPropertiesduringSimulation4.1.6.Addin......
  • Backpropagation
    backpropagation(反向传播)在计算gradient的vector时可以有效率地把vector计算出来我们先考虑一个neuron考虑链式法则,现计算$\frac{\partialz}{\partialw}$,计算较为简单,规律发现就是input以上步骤就叫forwardpass,接下来介绍backwardpass,即计算$\frac{\partialC}{\parti......
  • AC475A 2024省选联测26 博弈
    题意两个人在一张DAG上移动棋子,每个格子的颜色为黑/白。每次操作可以移动一个格子颜色和自己相同的棋子。不能走的人输掉游戏。先手为白色,问所有放棋子的\(2^n\)种方案,先手必胜有多少。Sol不难发现,自己颜色内的棋子不会被对方偷走,也就是说,想控制所有棋子使得对方判负,......
  • 通过 saltstack 批量更新 SSL 证书
    哈喽大家好,我是咸鱼。之前写过两篇关于SSL过期巡检脚本的文章:SSL证书过期巡检脚本SSL证书过期巡检脚本(Python版)这两篇文章都是讲如何通过脚本去自动检测SSL过期时间的,当我们发现某一域名的SSL证书过期之后,就要及时更换。如果这个域名下有很多服务器,我们一台一台......
  • 核心子方法2: obtainFreshBeanFactory()方法详解
    先总结: 该方法new了一个beanFactory, 设置了一些忽略的接口, 加载并解析了bean.xml, 主要将bean信息解析为BeanDefinition保存到beanFactory中1.refreshBeanFactory()方法 1.1创建DefaultListableBeanFactory对象: createBeanFactory()->newDefaultListableBeanF......
  • 2024年Apache DolphinScheduler RoadMap:引领开源调度系统的未来
    非常欢迎大家来到ApacheDolphinScheduler社区!随着开源技术在全球范围内的快速发展,社区的贡献者“同仁”一直致力于构建一个强大而活跃的开源调度系统社区,为用户提供高效、可靠的任务调度和工作流管理解决方案。在过去的一段时间里,我们取得了一些重要的成就,但我们的愿景远未实......