ural 1297(后缀数组+RMQ)
摘要:
题意:就是让你求一个字符串中的最长回文,如果有多个长度相等的最长回文,那就输出第一个最长回文。思路:这是后缀数组的一种常见的应用,首先把原始字符串倒转过来,然后接在原始字符串的后面,中间用一个不可能出现的字符隔开。然后就用到后缀数组的性质了,我们枚举每一个原始字符串中的字符以它为中心(分为奇数和偶数两种情况)进行查找,比如对于下标为i的字符,当回文串为奇数时,我们要求的就是i的后缀与2*n-i的后缀的最长公共前缀了,然后根据height数组的性质就转化成求height[i+1]...height[2*n-i]中的最小值了,这时我们想到了用RMQ求区间最值了,对于不会RMQ的童鞋可以先去学习下, 阅读全文
posted @ 2013-08-10 10:01 后端bug开发工程师 阅读(1163) 评论(0) 推荐(0) 编辑