摘要: Manacher算法能够在O(N)的时间复杂度内得到一个字符串以任意位置为中心的回文子串。其算法的基本原理就是利用已知回文串的左半部分来推导右半部分。转:http://blog.sina.com.cn/s/blog_70811e1a01014esn.html首先,在字符串s中,用rad[i]表示第i个字符的回文半径,即rad[i]尽可能大,且满足:s[i-rad[i],i-1]=s[i+1,i+rad[i]]很明显,求出了所有的rad,就求出了所有的长度为奇数的回文子串.至于偶数的怎么求,最后再讲.假设现在求出了rad[1..i-1],现在要求后面的rad值,并且通过前面的操作,得知了当前字符 阅读全文
posted @ 2013-07-28 20:21 沐阳 阅读(12729) 评论(0) 推荐(2) 编辑
摘要: HDU-4611Balls Rearrangement题意:具体题意不大清楚,最后要处理一个这样的表达式:sum{ |i % a - i % b| },0 #include #include #include #include #include using namespace std;priority_queueq1, q2;int main() { int T; scanf("%d", &T); int a, b, n; while (T--) { scanf("%d %d %d", &n, &a, &b); while 阅读全文
posted @ 2013-07-28 14:18 沐阳 阅读(473) 评论(0) 推荐(0) 编辑