摘要: 后缀数组是解决一系列字符串题目的利器,后缀数组中保留了这样的信息。sa[i]表示排名为第 i 位的后缀是从sa[i]开始的。通过倍增算法可以在O(nlogn)的时间复杂度内将所有的后缀进行排序。而height数组也是在处理问题中经常要使用到的,height[i]表示排名第 i 的后缀与排名第 i-1 位的后缀的最长公共前缀的长度。具体见代码。#include #include #include #include using namespace std;const int N = 100005;int wa[N],wb[N],wv[N],ws[N];int cmp(int *r,int a,in 阅读全文
posted @ 2013-08-02 21:43 沐阳 阅读(4250) 评论(0) 推荐(4) 编辑
摘要: HDU-4632Palindrome subsequence题意:给定一个字符串,长度最长为1000,问该串有多少个回文子串。分析:设dp[i][j]表示从 i 到 j 有多少个回文子串,则有动态规划方程:str[i] != str[j]:dp[i][j] = dp[i+1][j] + dp[i][j-1] - dp[i+1][j-1];str[i] = str[j]:dp[i][j] = dp[i+1][j] + dp[i][j-1] + 1.#include #include #include #include #include using namespace std;const int 阅读全文
posted @ 2013-08-02 17:46 沐阳 阅读(398) 评论(0) 推荐(0) 编辑