[HDU3518]Boring counting(后缀数组)
传送门
求出现超过1次的不重叠子串的个数
根据论文中的方法。
枚举子串的长度 k。
用 k 给 height 数组分组,每一组求解,看看当前组的位置最靠后的后缀和位置最靠前的后缀所差个数是否大于长度,大于的话 ans++。
分组思想需要认真体会一下。
——代码
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #define N 1005 5 #define max(x, y) ((x) > (y) ? (x) : (y)) 6 #define min(x, y) ((x) < (y) ? (x) : (y)) 7 8 int len, n, m, ans; 9 int buc[N], x[N], y[N], sa[N], ran[N], height[N]; 10 char s[N]; 11 12 inline void build_sa() 13 35 } 36 37 inline void build_height() 38 49 } 50 51 inline void check(int k) 52 61 else 62 66 ans += Max Min >= k; 67 } 68 69 int main() 70 82 return 0; 83 }View Code
上一篇:[luoguP3355] 骑士共存问题(二分图最大独立集)
后缀数组
spc文件怎么看,spc文件用什么打开?
0文件怎么看,0文件用什么打开?
sparseimage文件怎么看,sparseimage文件用什么打开?
sp文件怎么看,sp文件用什么打开?
dv文件怎么看,dv文件用什么打开?
soundpack文件怎么看,soundpack文件用什么打开?
dus文件怎么看,dus文件用什么打开?
dtw文件怎么看,dtw文件用什么打开?
spdf文件怎么看,spdf文件用什么打开?
0文件怎么看,0文件用什么打开?