首页 > 其他分享 >SAM小记

SAM小记

时间:2024-02-24 17:12:59浏览次数:28  
标签:slen SAM len edp 长度 节点 小记

构建其实也写了,但没放上来
直接放题吧

【模板】后缀自动机(SAM)

首先我们求出SAM
然后,我们对于每一个前缀对应的节点的edp+1,因为这个串是最长的串(为叶子)
然后dfs子树求和,求出edp,然后就可以做了

P2408 不同子串个数

SAM中一个节点代表的串的个数是\(len[now]-len[link[now]]\),对于每个节点分别求和

P4070 [SDOI2016] 生成魔咒

和上面的一样,不过要动态维护
由于每次只会改变常数个点,直接维护那个ans即可

P5341 [TJOI2019] 甲苯先生和大中锋的字符串

出现次数就是edp集合的大小
然后对于每一个节点看,如果正好k次,就对最长长度和最短长度之间差分一下然后扫一遍即可

CF802I Fake News (hard)

和模板几乎一模一样

P3975 [TJOI2015] 弦论

比较有意思
(待补)

P6640 [BJOI2020] 封印

首先把T串建SAM,对于每个S的前缀算出在T中出现过的最大后缀长度slen
查询就是\(\min_{i=l}^r min(i-l+1,slen_i)\)
假设\(i-l+1<=slen_i\),也就是\(i-slen_i+1<=l\)
可以发现,随着i的增加,左边的一定是非严格单调递增的,因为i每次会增加1,slen最多增加1
那么就可以二分出最小的i满足上述条件,那么左边的就是\(i-l+1\),右边的就是slen
左边的就用i算,右边的用ST表求最小值即可

CF235C Cyclical Quest

首先还是把文本串建出,求出每个节点edp的大小,设为siz数组
然后由于循环同构,就可以看成删除一个前面的,添加一个后面的
那么先把T能匹配匹配,然后如果长度大于了len,就删一个前面的
每次增加一个后面的
删就用上SAM的性质,因为parent树就是减前缀,每次减一后看要不要跳fa
如果匹配的长度等于T的长度就累加siz即可

标签:slen,SAM,len,edp,长度,节点,小记
From: https://www.cnblogs.com/longzhaocheng/p/18031273

相关文章

  • 用于linux和windows共享的samba服务
    ftp是客户端、服务端两个服务端是vsftpdlinux客户端是ftp命令,以及其他各种支持ftp协议的工具,如windows下提供很多软件,支持图形化上传下载ftp,xftpwindows访问ftp命令行操作C:\Users\yu>ftpftp>byeC:\Users\yu>C:\Users\yu>C:\Users\yu>ftp10.0.0.31连接到10.......
  • Java虚拟机小记
    目录运行时数据区域Java堆对象创建对象的内存布局对象的访问定位句柄直接指针GC判断对象是否已死引用计数算法可达性分析算法引用的类别垃圾收集算法分代收集理论标记清除算法标记复制算法标记整理算法实现细节并发的可达性分析垃圾收集器serial收集器ParNew收集器ParallelScaven......
  • av_samples_fill_arrays
    av_samples_fill_arrays是FFmpeg中一个非常重要的函数,用于填充音频数据的指针数组。在音视频处理中,经常需要处理音频数据,而av_samples_fill_arrays可以正确地组织音频数据,以便后续处理和编解码。av_samples_fill_arrays函数的原型:/***Fillplanedatapointersandlinesize......
  • because it set 'X-Frame-Options' to 'sameorigin'
    报错becauseitset'X-Frame-Options'to'sameorigin'.Refusedtodisplay'https://xxx.xxx.cn/'inaframebecauseitset'X-Frame-Options'to'sameorigin'.解决方法:修改页面,增加meta配置<head><!--CSP......
  • JMeter中Sample time、Load time、Response time、Latency time、Connection time的区
    转载自:https://www.cnblogs.com/youxin/p/8684891.html ==================  jmeter是一款纯java的性能测试工具,跨平台运行方便、提供图形化界面设置、简单易用。  在性能测试方法论中,很典型的方法就是二八原则,量化业务需求。二八原则:指80%的业务量在20%的时间里完......
  • 不带删尺取小记
    目录前言双指针的移动与限制条件有关CF1548BIntegersHaveFriends分析代码CF1547FArrayStabilization(GCDversion)分析代码JZOJ6358小ω的仙人掌分析代码双指针的移动与所求区间有关OJ1-F矩阵滑窗题目大意分析代码前言期末考考了,当时用倍增+ST表多了个\(\log\)做的......
  • both methods have same erasure, yet neither overrides the other
    泛型,作为JDK5时代引入的”语法糖“,在编译的时候是会被抹除的,换言之,specialSort(List<Dog>)和specialSort(List<Apple>)在编译时都会变成specialSort(List),因此不符合重载的原则(变量名相同、参数类型或数量不同)。参考:https://blog.csdn.net/m0_37676618/article/details/106714182......
  • 目标检测 | Farthest Point Sampling 及其 CUDA 实现
    FarthestPointSampling及其CUDA实现目录FarthestPointSampling及其CUDA实现概述均匀随机采样FarthestPointSampling(待完成)FarthestPointSampling的并行版本(待完成)概述在深度学习中,在mesh模型(网格模型)上直接学习并预测是一个相当复杂的任务,一方面在于没有高效的......
  • 卡特兰数小记
    引入\(n\)个节点的二叉树个数。长度为\(2n\)的合法括号序列数量。不加说明的给出结论:上面两个问题的答案均为卡特兰数列\(H\)的第\(n\)项,\(H_n\)。暴力DP理解第一个问题设DP状态\(f(i)\)为\(i\)个节点的二叉树个数。求\(f(i)\)时,枚举左儿子节点数量\(j......
  • Sample-Efficient Deep Reinforcement Learning via Episodic Backward Update
    发表时间:2019(NeurIPS2019)文章要点:这篇文章提出EpisodicBackwardUpdate(EBU)算法,采样一整条轨迹,然后从后往前依次更新做experiencereplay,这种方法对稀疏和延迟回报的环境有很好的效果(allowssparseanddelayedrewardstopropagatedirectlythroughalltransitionso......