首页 > 其他分享 >ybt2.5章AC自动机题解

ybt2.5章AC自动机题解

时间:2024-12-04 21:22:16浏览次数:5  
标签:nxt AC 字符 题解 ybt2.5 tr 自动机 字典

算法理解

即在字典树上跑kmp

T1:

根据这个结论我自己手搓了一个AC自动机上去,喜提TLE

我是如何操作的呢?

我当时的想法是这样的:我们把字典树从根到该节点形成的链看成是一个模式串与文本串进行匹配,然后就用一个dfs来传递j就可以解决了

然后我打开书一看到这幅图,立马就不淡定了

我dfs可能nxt数组并未 \(nxt[u]\) 在u之前更新到

所以我们只好采取bfs

然后洛谷上过了,ybt又TLE了

原因是我没有用一个小小的优化:

if(!tr[x][i]){
    tr[x][i]=tr[nxt[x]][i];
    continue;
}

如果这个地方本身就没有字符,那么意味着我们就要往前跳了,我们考虑正常的kmp跳法就是跳到有字符了为止,也就是说我们要跳的位置都是没有字符的,那我们就把这个位置修改为第一个有值的位置,下一次跳直接一步到位。

最后统计答案时直接就能访问到第一个合法状态,然后在暴力往上跳所有nxt然后统计有哪些被访问到了,因为跳一次nxt可能只是深度-1,所以因为题目中有限制字典树深度最多为50,所以复杂度为 \(O(M*50)\)

标签:nxt,AC,字符,题解,ybt2.5,tr,自动机,字典
From: https://www.cnblogs.com/zcxnb/p/18587218

相关文章

  • web19([GYCTF2020]Blacklist):
    1.输入1'回显出语法错误(找到注入点,是字符型)error1064:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMariaDBserverversionfortherightsyntaxtousenear''1'''atline12.依次输入1'orderby3#、1'......
  • [AGC006F] Blackout
    前言米奇妙妙题,确实很好算法那么接下来就自己推吧首先,一个做法是对于\((x,y)\),将\(x\toy\)连边,这样问题转化成:如果存在\(x\toy\)和\(y\toz\)那么连\(x\toz\),求最终会有多少条边这个形式好像就更符合中国宝宝的体质,那么我们考虑解决猜测......
  • NOIP2024 简要题解
    T1编辑字符串(edit)考虑求出\(x\)表示两个串最多能匹配多少对\(0\)。设两个串\(0\)的个数加起来为\(s\),那么会发现恰好有\(s-2x\)个位置是不匹配的,我们只需要最小化\(s-2x\)即最大化\(x\)即可。可以直接贪心求解,枚举每个位置判断是否能匹配一对\(0\),处理出两个......
  • 权限ACL的使用
    权限ACLACL用于解决用户对文件身份不足的问题的开启ACLdumpe2fs命令查询指定分区详细文件系统信息。dumpe2fs-h/dev/sda3手工开启分区的ACL权限:mount-oremount,acl/(暂时的)通过修改/etc/fstab文件,永久开启ACL权限ACL基本命令查询文件的ACL权限:getfacl文件名设定A......
  • 随笔-bpftrace-堆栈不显示函数名|显示unknown(How to print the function name instea
    link:Howtoprintthefunctionnameinsteadoftheaddressforustack#3108ajor:Symbolicationisbasedoffthesymboltableofthetargetapplication.Itdoesn'tlooklikeyou'redoinganythingwrongtome,butyoucoulddoublecheckthatsym......
  • 请解释一下什么是Kafka的acks策略
    Kafka的acks(acknowledgements)策略是生产者(Producer)在发送消息到Kafka集群时,用于控制消息持久化和确认机制的重要配置。这个策略决定了生产者何时认为一条消息已经被成功发送。Kafka提供了三种acks策略,它们分别对应不同的可靠性和性能权衡:acks=0:在这种模式下,生产者不会等待任......
  • kafka的acks=1策略数据丢失的风险场景
    在Kafka中,当使用acks=1策略时,确实存在数据丢失的风险,尽管这种风险相对较低。以下是对acks=1策略下数据丢失情况的详细解释:一、acks=1策略概述acks=1(或acks=leader)表示生产者会等待Kafka集群中的主副本(Leader)确认消息已经被成功写入日志后,才认为这条消息已经被成功发送。这种策略......
  • nacos开启鉴权后,默认账号密码无法登录问题,解决方案
    Linux系统下,检查使用版本java-version,如果是openJDK1.8版本,那么可能存在openJDK本身缺少加密软件包。检查登录界面,控制台会出现,报错样式,如下图所示此时就可以判断,由于jdk版本的问题,导致默认账号密码无法登录。解决方法:升级JDK版本到openJDK17或改用oracleJDK1.8......
  • AEC论文解读 -- ACOUSTIC ECHO CANCELLATION WITH THE DUAL-SIGNAL TRANSFORMATION LS
    程序地址预训练模型一、技术解读1.1信号处理1.1.1数据集来源合成数据集:包含10,000个示例,涵盖单工、双工、近端噪声、远端噪声和非线性失真情况。真实录音数据集:包含不同环境中的录音,确保多样性。前500个示例用于工具评估,称为“双工测试集”。训练时仅使用远端信......
  • 如何寻找Oracle相关的资源?
    我经常在面对一个问题的时候,到处查询,很多片段的内容,整合才能得到袭击想要的答案。在一个月前我写了一个流水账的文章,记录自己工作的一部分内容:《Oracle数据库从11g升级到19c》(https://www.cnblogs.com/lndt/articles/18501706)。这边文章中,有两个资源:autoupgrade.jar和jdk-11......