如果你没看题解直接写,关于本题一些会WA #2的不明显错误
查看原帖
如果你没看题解直接写,关于本题一些会WA #2的不明显错误
413905
Nicolas192837楼主2024/11/29 16:05

1、本题中的字典树的fail数组不可以边读入边处理
2、本题中的字典树的fail数组不可以使用DFS处理,如果你硬要用DFS处理,需要打记忆化并且用非正常逻辑(从下到上)处理
讲讲原因:
举个例子:
n=2,s1=abcd,s2=bcdn = 2 , s_1 = 'abcd ' , s_2='bcd'
如果边读入边构造,在构造 s1s_1 相关的点的fail数组的时候,fail应该指向 s2s_2 相关的点,由于 s2s_2 还未在字典树构造,会导致fail构造失败,这个也不是排序能解决的问题,因为可能存在 s1,s2s_1,s_2 相互调用的情况,所以最好树全部建完再构造fail数组
同理,如果使用DFS构造,会发现 s1s_1 fail指针指向 s2s_2 ,并且在fail指针移动的时候会需要用到 s2s_2 的fail指针,但 s2s_2 的fail指针还未处理,所以会出问题

2024/11/29 16:05
加载中...