练手速的方法可以练吗?如果可以那怎么练?

小Biu的期中考试刚刚结束调皮的尛Biu不喜欢学习,所以他考试中抄袭了小Piu的试卷

考试过程中一共有n道题目,每道题目的标准答案为区间[1,5]中的一个正整数

现在有小Piu和小Biu的答案序列a和b,现在老师想知道两个答案序列最长连续相等的子串的长度是多少

 
输出一个正整数表示两个序列的最长相等子串的长度。
 
 
 

        首先如果这两个长字符串存在某个最长的公共子串,那么该子串一定分别是这两个串的后缀的前缀.所以我们将两个串中间加一个符号’$’然后連接起来形成一个新串(还要添尾0).然后我们求这个新串的height数组值我们从sa[1]到新串长sa[n-1]依次扫描字典序相邻的两个后缀的LCP,如果这两个后缀分别屬于之前不同的两个串那么他们的LCP值就可能是他们最长连续公共子串的长度。否则的话就不是

        为什么上面的做法对呢?想想假设串a和串b存在最长字串c(长len),那么c是a串的后缀i的前缀c是b串的后缀j的前缀。所以在新串中按字典序排序的height数组后缀i和后缀j一定是相邻的。假设后缀i與后缀j之间还有后缀k无论后缀k属于a串还是b串,k肯定与i与j的公共部分要>=len(想想是不是这样?)

 
 //保存原始字符串+‘\0’后形成的字符串
 //即原始字符串茬s中表示[0,n-2]范围
 
 /// x[i]是第i个元素的第一关键字 y[i]表示第二关键字排名为i的数,第一关键字的位置
 
 //即表示排名i-1和排名i的后缀的最大公共前缀LCP长度
 

}

那些说我不强的喷子们 这个视频 伱们可以看看 说我盗图的 可以看看我id就叫长歌 这些都是我打的 我学业紧张打不上101星 所以每次就只能打到荣耀了

}

我要回帖

更多关于 如何练手速 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信