
manacher
guoshiyuan484
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj2565manacher算法
//先开始没发现*号的作用到后面发现阔以用*号来链接就好了。 //比如fff 转换后市#*f*f*f* reall[i]表示以i为起点往右最长的回文串长度,real[i]表示以i为起点往左的最长回文串长度 //当str[i]==‘*‘;的时ans=max(ans,reall[i]/2+real[i]/2);这样从左到右枚举*就好了。 //那么怎么求reall[i] (real[i]用mana原创 2017-07-21 23:19:50 · 213 阅读 · 0 评论 -
hdu5371
想了一个sb做法.首先manacher 然后求出每个点的半径pr[i]然后(举个例子) o...a......b.......c,(a,b,c分别代表下标,pr[b]最多达到o点,pr[c]也最多达到o点然后更新树状数组o点的 值分别为b,c当然取最大值了(b,c中的)然后在求以a为左分点的情况下的最长值.(说明一下.......|......|........要求的串肯定是这个样的吧,a就是左原创 2017-07-22 20:14:17 · 263 阅读 · 0 评论 -
bzoj1414
manacher+单调栈: 题解正在写。。。。 #include #include #include using namespace std; struct mapp { int value; int rline, rrow;//以此点为对称中心的对称串半径 int r;//最后能得到的最大正方形半径 int tr[5];//四个方向能得到的最大半径 void getans() {原创 2017-10-19 07:57:52 · 271 阅读 · 0 评论