摘要: 没有题面差评 先来遍SA求出h,再给h排序,从大到小计算,并查集维护连续的区间(表达能力太弱。。还是看代码好说话) 1 #include<bits/stdc++.h> 2 #define inc(i,l,r) for(int i=l;i<=r;i++) 3 #define dec(i,l,r) fo 阅读全文
posted @ 2016-02-11 23:01 onlyRP 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 明显要用求SA再求h,而lcp(i,j)就等于i到j之间最小的h 用f[i]表示i跟比i大的后缀的lcp的和,然后用单调栈维护最小值就好了(有点像DP?) 1 #include<bits/stdc++.h> 2 #define inc(i,l,r) for(int i=l;i<=r;i++) 3 # 阅读全文
posted @ 2016-02-11 16:11 onlyRP 阅读(166) 评论(0) 推荐(0) 编辑