随笔分类 - SA
摘要:肉丝哥哥钦定好题 话说我的blog现在为什么到处都是肉丝哥哥 先来想一个弱化版,假如能够n整除K怎么做? 把每个数字看成一个字符串,按字典序排名,这个可以后缀数组解决,然后暴力枚举每种情况,O(1)判两个长度为n/K的数字大小即可 然后不能整除一定是有n-n/K*K个长度为n/K+1的数字 先二分答
阅读全文
摘要:总的来讲,SAM难想,SA难写,SAM跑得快 SAM: 这题其实巨像bzoj2780 建了广义SAM以后,用dfs序+树状数组求出每个点在多少不同的串里面 然后枚举每个串在上面跑就行了。 SA: 然后如果要上后缀数组的话,把它们接在一起弄,中间插不同的乱七八糟的符号,先套路一手st表求LCP 对于每
阅读全文
摘要:虽然有准备但是调得就像失了智一样 首先我们先跑一次后缀数组 对于答案二分,找出C的Rank,左右延伸,看最远可以满足的L、R,这个可以通过st表实现 那么对于A~B的字串,它所要满足的,就是A<=i<=B,L<=Rank[i]<=R 那么就按照Rank建主席树,把i插入,查找就找区间L~R内有没有A
阅读全文
摘要:今天早上本来就想填掉这个坑的。。。 然后还是血淋淋的一片。 心态崩了就去做跳蚤 调着调着跳蚤才发现我st表模版写挂了。。。 满怀希望的去把这题改了。 然后还是血淋淋的一片。 今天晚上一怒之下把以前的代码翻出来改st表 wc,A了?A了!。。 cnm 这题常规操作st表求LCP 然后单调栈维护区间
阅读全文
摘要:一入字符深似海,从此AC是路人。 ——题记 为什么恶心呢。 在神犇的blog,我们才能知道,本质不同的子串=∑(Len−sa[i]−height[i]) 一脸蒙蔽的NN真是可爱啊。然而,这个sa是0~n-1的。 神犇说:我们可以二分排名为mid的串,找到排名为mid的串的魔法就是这个(hhhhhh
阅读全文
摘要:发现我做题都是一眼秒算法,然后就不知道怎么做了。 好的这次一眼就是后缀数组了。 然后这个式子前面的可以O(1)公式搞定,其实问的就是sigema(LCP(Ti,Tj)) 然后先写了个暴力,就大概长这样: 可以发现mi是递减的嘛,然后对于一个height值,它所能影响的区间就是前一个比他大值的位置+1
阅读全文