现在的位置: 首页 > 综合 > 正文

USACO-PROB Calf Flac

2013年05月08日 ⁄ 综合 ⁄ 共 402字 ⁄ 字号 评论关闭

在文件的读入,我开始是先整个读入到一个数组中,然后遍历数组再去除无效的字符,这种方式下,在第二个测试数据上就超时了。

将字符串的处理在读入的时候就做,每次读入一个字符然后判断是有有效,有效的存入另外一个字符,并记录原来的字符位置。

感觉这两种方式都是O(n)的时间,奇怪为什么前一种会超时啊~~~????

 

(1)按照网上的 一个所谓的O(n)办法

以当前字符结尾的最长回文长度计算:

fn(i) = fn(n - 1) + 2  char(i) == char(n – fn(i -1) -1)

fn(i) = 3  奇数

fn(i) = 2  偶数

else 1

这种情况系的话,lvlvlvlv的计算结果就是 11335357 ,vlvlvlv

应该的结果是遇到的第一个回文lvlvlvl

 

(2)一种解决办法就是奇偶对称的分别计算

用两个数组记录到字符i的最长奇、偶回文长度

这次终于搞定了

 

(3)看到还有一种解决方法就是穷举以每个字符为中心的回文长度,然后找出最大值

抱歉!评论已关闭.