题面:洛谷(带翻译)

题解:

  直接求相交不太好求,所以考虑求不相交的回文串对数。

  设ll[i]表示以i为开头的回文串个数,rr[i]表示结尾<=i的回文串个数。

  然后不相交的回文串对数显然就是对于每个$rr[i - 1] \cdot ll[i]$求一次和。

  最后再用全集减去不相交的回文串对数即可求出相交的回文串对数。

  那么如何求这2个数组呢?

    对于每个最长回文半径r[i],它可以对一个区间做出贡献,即以它为中心那些回文串的开头or结尾都在一个区间内,相当于每个r[i]都可以对某个区间做区间加。

    因此我们差分维护一下可以得到ll数组,同理也可以得到表示以i为结尾的回文串个数的数组,然后对这个数组求一次前缀和即可得到rr数组

 #include<bits/stdc++.h>
using namespace std;
#define R register int
#define AC 2010000
#define ac 4001000
#define LL long long
#define p 51123987 int n, maxn, pos, len;
int r[ac];
LL ll[AC], rr[AC];
LL sum;
char ss[AC], s[ac]; void pre()
{
scanf("%d%s", &len, ss + );
s[] = '$', s[] = '#', n = (len << ) | ;
for(R i = ; i <= len; i ++) s[i << ] = ss[i], s[(i << ) | ] = '#';
} void manacher()
{
for(R i = ; i <= n; i ++)
{
r[i] = (maxn > i) ? min(r[(pos << ) - i], maxn - i + ) : ;
while(s[i + r[i]] == s[i - r[i]]) ++ r[i];
if(i + r[i] - > maxn) maxn = i + r[i] - , pos = i;
++ rr[(i + ) >> ], -- rr[(i + r[i]) >> ];
++ ll[(i - r[i] + + ) >> ], -- ll[(i >> ) + ];
}
for(R i = ; i <= len; i ++)
rr[i] = (rr[i] + rr[i - ]) % p, ll[i] = (ll[i] + ll[i - ]) % p;
for(R i = ; i <= len; i ++) rr[i] = (rr[i] + rr[i - ]) % p;//统计一次前缀和
} void work()
{
sum = rr[len] * (rr[len] - ) / % p;
for(R i = ; i <= len; i ++)
sum = (sum - rr[i - ] * ll[i] % p + p) % p;
printf("%lld\n", (sum + p) % p);
} int main()
{
// freopen("in.in", "r", stdin);
pre();
manacher();
work();
// fclose(stdin);
return ;
}

CF17E Palisection manacher的更多相关文章

  1. CF17E Palisection(manacher/回文树)

    CF17E Palisection(manacher/回文树) Luogu 题解时间 直接正难则反改成求不相交的对数. manacher求出半径之后就可以差分搞出以某个位置为开头/结尾的回文串个数. ...

  2. CF17E Palisection(manacher)

    题意 给出一个长度为N的字符串S,问S中有多少个回文子串对(i,j)使得i,j在S中的位置相交?(N<=2*106) 题解 #include<iostream> #include&l ...

  3. CF17E Palisection 差分+manacher算法

    题目大意: 给定一个串$S$,询问有多少对相交的回文子串 直接做的办法: 我们先考虑求出以$i$为结尾的串的数量,这个很好统计 之后,我们再求出所有包含了点$i$的回文串的数目 这个相当于在$i$的左 ...

  4. Codeforces 17E Palisection - Manacher

    题目传送门 传送点I 传送点II 传送点III 题目大意 给定一个串$s$询问,有多少对回文子串有交. 好像很简单的样子. 考虑能不能直接求,感觉有点麻烦.因为要考虑右端点在当前回文子串内还有区间包含 ...

  5. CF17E Palisection——优秀的综合计数题

    题意翻译 给定一个长度为n的小写字母串.问你有多少对相交的回文子 串(包含也算相交) . 输入格式 第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式 相交的回文子串 ...

  6. CF17E Palisection

    题意 给定一个长度为n的小写字母串.问你有多少对相交的回文子串(包含也算相交) 相交的回文子串个数 \(mod\ 51123987\) Sol 求相交的回文子串不太好求 考虑用总数减去不相交的回文串个 ...

  7. CF17E Palisection(回文自动机)

    题意翻译 给定一个长度为n的小写字母串.问你有多少对相交的回文子 串(包含也算相交) . 输入格式 第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式 相交的回文子串 ...

  8. CF17E Palisection (回文自动机+DP)

    题目传送门 题目大意:给你一个字符串,让你求出有多少对相交的回文子串 啊啊啊啊降智了,我怎么又忘了正难则反! 求相交会很难搞.把问题转化成求互不相交的回文子串再减一下就行了 先利用$PAM$求出以每个 ...

  9. CF17E Palisection(回文树)

    题意翻译 给定一个长度为n的小写字母串.问你有多少对相交的回文子 串(包含也算相交) . 输入格式 第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式 相交的回文子串 ...

随机推荐

  1. Scrapy爬取美女图片续集 (原创)

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用.(我的新书< ...

  2. 假回溯-uva140带宽

    题目链接:https://vjudge.net/problem/UVA-140 题解:这道题利用全排函数即可解决,但是这道题技巧性强,稍微不注意就会超时,一开始没有想起全排函数,自己写回溯全排超时了, ...

  3. python的30个编程技巧

     1.原地交换两个数字 x, y =10, 20 print(x, y) y, x = x, y print(x, y) 10 20 20 10 2.链状比较操作符 n = 10 print(1 &l ...

  4. Linux内核学习笔记(2)-- 父进程和子进程及它们的访问方法

    Linux系统中,进程之间有一个明显的继承关系,所有进程都是 PID 为1的 init 进程的后代.内核在系统启动的最后阶段启动 init 进程.该进程读取系统的初始化脚本(initscript)并执 ...

  5. Masha and Bears(翻译+思维)

    Description A family consisting of father bear, mother bear and son bear owns three cars. Father bea ...

  6. "Hello World!"团队第十次会议

    Scrum会议 今天是我们"Hello World!"团队第十次召开会议,博客内容是: 1.会议时间 2.会议成员 3.会议地点 4.会议内容 5.todo list 6.会议照片 ...

  7. 关于算法的时间复杂度O(f(n))

    (一)算法时间复杂度定义: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度,记作:T(n ...

  8. OpenCV学习笔记——图像平滑处理

    1.blur 归一化滤波器Blurs an image using the normalized box filter.C++: void blur(InputArray src, OutputArr ...

  9. 基础系列(1)—— NET框架及C#语言

    一.在.NET之前的编程世界 C#语言是在微软公司的.NET框架上开发程序而设计的,首先作者给大家纠正了一下C#的正确发音:See Sharp (一) 20世纪90年代末的Windows编程 这时大多 ...

  10. Improving the Safety, Scalability, and Efficiency of Network Function State Transfers

    Improving the Safety, Scalability, and Efficiency of Network Function State Transfers 来源:ACM SIGCOMM ...