洛谷 P3975 后缀自动机 + 建link树 + 字典树统计字符串个数

该博客介绍了如何利用后缀自动机和link树解决ACM竞赛中的一道字符串计数题。当指令t为1时,不同位置的相同串被视为不同,为0时视为相同。通过构建link树并标记endpos等价类,统计最长后缀出现次数,以及遍历字典树获取前缀字符串数量,从而确定第k小的字符串。博客作者对于clone点的大小统计仍有疑问,代码已给出。
摘要由CSDN通过智能技术生成

       题目给定一个字符串 s s s,指令 t t t t t t 1 1 1 则不同位置的相同的串视作不同,为 0 0 0 则视作相同,问你字典序第 k k k 小的串。

       首先按照 l i n k link link 来建树,自下而上除 c l o n e clone clone 点外长度递减。我们标记所有 e n d p o s endpos endpos 等价类,也就是插入的每个字符对应的状态,然后依照 l i n k link link 树来统计,所有的 e n d p o s endpos endpos 等价类中的最长后缀出现了几次(若题目说不能重复计算则全为 1 1 1)。

       另外再有一个遍历字典树来求以当前字符串为前缀的字符串个数。这样后续求第 k k k 小就可以通过数量来判断当前是否为第 k k k 小。若此时前缀的字符串数量少于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值