/*---------------倍增算法+RMQ后缀数组模板-------------- 输入:从0开始的字符串g,长度len最大为10^6 输出: sa[]表示:n 个后缀从小到大进行排序之后把排好序的后缀的开头位置顺 次放入 sa 中,sa[i]表示排第i位的字符串开头是sa[i],因为添加了一个结尾0,所以sa[0]=len height 数组(h[]):定义 h[i]=suffix(sa[i-1])和 suffix(sa[i])的最长公 共前缀,也就是排名相邻的两个后缀的最长公共前缀。 mrank[i]表示:以i位开头的字符串,排名为mrank[i]。mrank[len]=0; cal(x,y):查询g[b]g[b+1]...g[len-1]与g[d]g[d+1]...g[len-1]的最大前缀数。 复杂度:空间复杂度33*len,时间复杂度,建立后缀数组为len*log(len),若不需要建立RMQ为len -----------------------------------------------------------------倍增算法+RMQ后缀数组模板------------