“//用manacher算法得到p[i]表示以该点为中心的回文串最长能延伸p[i]长度
//通过p[i]可以求得其pre[i] , suf[i]表示以i为最后一个前面,后面是否能形成回文串
//枚举中间的字符串的位置和长度得到答案
#include
#include
#include
using namespace std ;
const int...
分类:
其他好文 时间:
2015-08-02 11:49:04
阅读次数:
113
题意:判断一个字符串能否划成三段非空回文串。思路:先用二分+hash在nlogn的时间内求出以每条对称轴为中心的回文串的最大半径r[i](可以用对称的两个下标之和来表示 ),然后利用r[i]求出pre[i]和suf[i],其中pre[i]表示0~i能否形成回文串,suf[i]表示i~n-1能否形成回...
分类:
其他好文 时间:
2015-08-02 08:54:58
阅读次数:
225
题意:判断是否能将字符串S分成三段非空回文串。吐槽: 才26个人过了,本来我也应该是其中的一员,但是管理员说可能系统出错了!!! 针对2万个字符'a'的hack例子,我的思路应该在O(n)时间内解决,但是TLE!!直接交HDU仅需300ms,针对这个例子用我的电脑也仅需0.5s。但是他们说不能还.....
分类:
其他好文 时间:
2015-08-01 23:34:00
阅读次数:
249
Three Palindromes
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 80 Accepted Submission(s): 21
Problem Description
Can we divided a...
分类:
其他好文 时间:
2015-08-01 22:04:10
阅读次数:
139
题目:给出一个只有ab组成的串,求其中半回文串的第k大。思路:暴力枚举出所有半回文串,然后暴力插到trie里查询第k大,原先写trie是抄模板的,这次自己写了一下。#include #include #include #include #include #include #include #incl...
分类:
其他好文 时间:
2015-07-30 10:47:06
阅读次数:
115
经典的区间DP,对于每个字符,在原字符串加上这个字符的代价是一个值,移除又是一个值,求把原字符串变成回文串的最小代价。经典的区间DP,状态转移方程见代码。在输入进行了一个处理,我们把对一个字符的增与删的操作的代价压缩成为一个数,代表对该字符进行增或删代价,把另一个相对较大的代价则忽略掉。因为在一遍插入一个字符与在另一边删除一个同样的字符对形成的贡献效果一样(可以仔细思考一下)。...
分类:
其他好文 时间:
2015-07-29 19:27:11
阅读次数:
162
3676: [Apio2014]回文串Time Limit: 20 SecMemory Limit: 128 MBSubmit: 844Solved: 331[Submit][Status][Discuss]Description考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出 现...
一、
题目描述
大家对回文串不陌生吧?一个字符串从前看和从后看如果一样的话,就是回文串,比如“上海自来水来自海上”就是一个回文串。现在我们的问题来了,把一个数字看成字符串,问它是不是一个回文数?时间复杂度和空间复杂度越低的算法,得分越高。
c++:
bool isPalindromeNumber(long num);
java:
boolean isPal...
分类:
移动开发 时间:
2015-07-29 12:21:54
阅读次数:
179
给一个字符串,计算最少加多少个字符能够使字符串变成回文串(即从前往后读与从后往前读一样)。
有2种思路,一种是直接区间DP,dp[j][i]表示[i,j]这个子串要变成回文串需要添加多少个字符,状态转移方程
如下:
if(s[i]==s[j])
dp[j][i]=dp[j+1][i-1];
else
dp[j][i]=1+min(min[j+1][i],min[j][i-1])
第二种思路也比较容易想,要将一个字符串变为回文串,那么我们...
分类:
编程语言 时间:
2015-07-27 00:19:30
阅读次数:
239
ACM中常用算法—-字符串ACM中常用的字符串算法不多,主要有以下几种:
Hash
字典树
KMP
AC自动机
manacher
后缀数组
EX_KMP
SAM(后缀自动机)
回文串自动机
下面来分别介绍一下:0. Hash字符串的hash是最简单也最常用的算法,通过某种hash函数将不同的字符串分别对应到不同的数字.进而配合其他数据结构或STL可以做到判重,统计,查询等操作.
#### 字符串的h...
分类:
编程语言 时间:
2015-07-26 12:42:25
阅读次数:
297