题目链接
传送门
题意
给你一个串串,问你有多少对回文串相交。
思路
由于正着做不太好算答案,那么我们考虑用总的回文对数减去不相交的回文对数。
而不相交的回文对数可以通过计算以\(i\)为右端点的回文串的个数\(\times\)以\(i+1,i+2\dots,n\)为左端点的回文串的个数计算得到。
以\(i\)为右端点的回文串的个数可以直接用回文树\(O(n)\)求出来,以\(i\)为左端点的回文串的个数反着求一遍即可。
不过要注意本题由于数据范围比较大,使用邻接矩阵会导致\(MLE\),因此需要使用邻接矩阵来代替。
代码实现如下
#include
#include