后缀数组+RMQ是O(nlogn)的,会TLE.....标准解法好像是马拉车,O(n).... 1 #include "algorithm" 2 #include "cstdio" 3 #include "cstring" 4 using namespace std; 5 #define ...
分类:
其他好文 时间:
2014-10-25 18:44:09
阅读次数:
212
给定字符串S, 找到其子串中最长的回文字符串.反转法: 反转S为S', 找到其中的最长公共子串s, 并确认子串s在S中的下标iS与在S'中的下标iS'是否满足式: length(S) =iS +iS' + length(s). 如果满足则s为搜索结果, 如果不满足我们就继续搜索.DP解法:定义 P[...
分类:
其他好文 时间:
2014-10-24 00:13:43
阅读次数:
231
把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询。复杂度O(nlogn)#include#include#include#include#include....
分类:
编程语言 时间:
2014-10-22 20:11:18
阅读次数:
270
【题目】
将一个很长的字符串,分割成一段一段的子字符串,子字符串都是回文字符串。有回文字符串就输出最长的,没有回文就输出一个一个的字符。
例如:habbafgh
输出h,abba,f,g,h。
【思路一】
基于“最长回文子串算法”求出当前字符串的最长回文子串,就可以分成3部分
a、最长回文子串left部分
b、最长回文子串
c、最长回文子串right部分
然后分别...
分类:
其他好文 时间:
2014-10-22 15:55:45
阅读次数:
231
回文数字。玩过回文字符串之后在玩一个回文数字,相比于最长回文字符串的巧妙,这道题目唯一值得称道的地方可能就是那句Do this without extra space,可以说这是这道题目明面上给出的唯一束缚,当然如果要是看了提示的话,会发现输入的整数是有负整数的可能。也就是说还要处理负数的问题,在这...
分类:
其他好文 时间:
2014-10-21 00:47:55
阅读次数:
204
1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 #define N 10001000 9 int n;10 int p[N];11 char s[N], str[N];12 ...
分类:
编程语言 时间:
2014-10-19 14:16:27
阅读次数:
251
定义:
线性DP问题的子状态与父状态之间往往相差一个元素,所以子状态通过添加一个增量而转换到父状态。从最小的子问题到原问题,一层一层的状态转移呈现出线性递增的关系,所以称为线性DP。
经典的线性DP问题有最大字段和、最长公共子序列、最长回文子序列、最长不下降(下降)子序列等等。。。
大部分的线性DP都是1维的。
陆续更新线性DP的题。...
分类:
其他好文 时间:
2014-10-16 16:01:22
阅读次数:
198
总结了几天的后缀数组,终于完成了。不可重叠重复串;可重叠k次重复串; 不相同子串个数最长回文子串 连续重复子串重复次数最多的连续重复子串最长公共子串长度不小于k 的公共子串的个数不小于k 个字符串中的最长子串出现或反转后出现在每个字符串中的最长子串3个字符串,问其中公共子串分别为1,2,3...l的...
分类:
编程语言 时间:
2014-10-16 02:57:51
阅读次数:
309
题目链接:http://poj.org/problem?id=1159思路: 对该问题的最优子结构与最长回文子序列相同。根据最长回文子序列的状态方程稍加改变就可以得到该问题动态方程。代码:#include #include const int MAX_N = 5000 + 10;int dp[MA....
分类:
其他好文 时间:
2014-10-11 02:49:14
阅读次数:
183
初看好简单 一开始调试着一直re 后来也不知道怎么就对了 但是还有一些bug存在 ,
这道题的打印路径和light oj An Easy LCS(ps:点击打开链接)一样
但是只改一下会Tle 因为(1000*1000*1000)好大
但是把存储的字符串改为string 定义的就过了
但是还是有一点有点难受(下面会说出)
我也是醉了
#include
#include...
分类:
其他好文 时间:
2014-10-07 02:36:42
阅读次数:
405