用manacher算法O(n)求出所有的回文半径。有了回文半径后,就可以求出L[i]表示以i结尾的回文串的起始位置的和R[i]表示以i起始的回文串的结尾位置的和,然后就可以求出答案了,这里要注意奇偶长度回文串的不同处理。复杂度O(n)

 #include<bits/stdc++.h>
using namespace std;
const int N = 1e6+;
typedef long long ll;
const int mod = 1e9+;
int n,m,i,r,p,f[N<<]; char a[N],s[N<<];
ll L[N], R[N];
void add(ll& a, ll b){
a += b;
if(a >= mod||a <= -mod) a %= mod;
}
int main(){
while(~scanf("%s", a+)){
n = strlen(a+);
for(i = ; i <= n; i++) s[i<<] = a[i], s[i<<|] = '#';
s[] = '$', s[] = '#', s[m = (n+)<<] = '@';
for(r=p=,f[]=,i=;i<m;i++){
for(f[i]=r>i?min(r-i,f[p*-i]):;s[i-f[i]]==s[i+f[i]];f[i]++);
if(i+f[i]>r)r=i+f[i],p=i;
} memset(L, , sizeof(ll)*(n+));
memset(R, , sizeof(ll)*(n+));
for(i=;i<=*n; i++){
int ret = f[i]-, pos = i/;
if(ret == ) continue ;
ret /= ;
if(i&){
//[pos+1, pos+rer/2]
add(L[pos+], pos), add(L[pos+], --pos), add(L[pos+ret+], ret-pos), add(L[pos+ret+], pos+-ret);
//[pos-ret/2+1, pos]
add(R[pos-ret+], pos+ret), add(R[pos-ret+], --pos-ret), add(R[pos+], -pos), add(R[pos+], pos+);
}else{
//[pos, pos+ret/2]
add(L[pos], pos), add(L[pos+], --pos), add(L[pos+ret+], ret-pos+), add(L[pos+ret+], pos-ret);
//[pos-ret/2, pos]
add(R[pos-ret], pos+ret), add(R[pos-ret+], --pos-ret), add(R[pos+], -pos), add(R[pos+], pos);
}
}
for(i=; i<=n;i++)
add(L[i], L[i-]), add(R[i], R[i-]);
for(i=; i<=n;i++)
add(L[i], L[i-]), add(R[i], R[i-]);
ll ans = ;
for(i=;i<n;i++){
ans += L[i]*R[i+];
if(ans >= mod||ans <= -mod)
ans %= mod;
}
cout << (ans+mod)%mod << endl;
}
return ;
}

HDU5785 manacher+差分数组的更多相关文章

  1. [NOIP2015]运输计划 D2 T3 LCA+二分答案+差分数组

    [NOIP2015]运输计划 D2 T3 Description 公元2044年,人类进入了宇宙纪元. L国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了L国的所有 ...

  2. 洛谷P3655 差分数组 树状数组

    题目链接:https://www.luogu.org/problemnew/show/P3655 不一定对,仅供参考,不喜勿喷,不喜勿喷. 先copy洛谷P3368 [模板]树状数组 2 题解里面一位 ...

  3. Karen and Coffee CodeForces - 816B (差分数组+预处理前缀和)

    To stay woke and attentive during classes, Karen needs some coffee! Karen, a coffee aficionado, want ...

  4. 牛客网小白月赛5I区间(差分数组)

    链接:https://www.nowcoder.com/acm/contest/135/I来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...

  5. Codeforces Round #419 (Div. 2)(B)差分数组

    传送门:Problem B https://www.cnblogs.com/violet-acmer/p/9721160.html 题意: Karen有n个关于煮咖啡的食谱,每个食谱都有个煮咖啡的最适 ...

  6. 差分数组|小a的轰炸游戏-牛客317E

    小a的轰炸游戏 题目链接:https://ac.nowcoder.com/acm/contest/317/E 思路  这题考查的是对差分数组原理和前缀和的理解. 四个数组分别记录朝着四个方向下放的个数 ...

  7. Gym 101775J Straight Master(差分数组)题解

    题意:给你n个高度,再给你1~n每种高度的数量,已知高度连续的3~5个能消去,问你所给的情况能否全部消去:例:n = 4,给出序列1 2 2 1表示高度1的1个,高度2的2个,高度3的2个,高度4的1 ...

  8. Educational Codeforces Round 54 E. Vasya and a Tree(树上差分数组)

    https://codeforces.com/contest/1076/problem/E 题意 给一棵树(n<=3e5),m(3e5)次查询,每次查询u,d,x,表示在u的子树中,给距离u&l ...

  9. 洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】

    题目描述 蒟蒻Edt把这个问题交给了你 ---- 一个精通数据结构的大犇,由于是第一题,这个题没那么难.. edt 现在对于题目进行了如下的简化: 最开始的数组每个元素都是0 给出nnn,optopt ...

随机推荐

  1. PHP的数据类型、常量、时间

    [数据类型之间相互转换] ◆ 一种是强制转换: setType( 变量, 类型);  // 类型 int, integer, float, double,real, bool, boolena, st ...

  2. 通达OA 免狗迁移到公网 的另类解决办法

    1,通达OA 发布到公网 ,要真正的 Anywhere2,正版通达OA,有加密狗在本地机器上 ,通达必须检测有狗才可以运行3,阿里云服务器  (你想往上插加密狗都没地方的说..汗)4,本地ISP 不提 ...

  3. 网络统计学与web前端开发基础技术

    网络统计学与web前端开发基础技术 学习web前端开发基础技术(网页设计)需要了解:HTML.CSS.JavaScript三种语言.下面我们就来了解一下这三门技术在网页设计中的用途: HTML是网页内 ...

  4. JavaScript脚本语言基础(三)

    导读: 数学对象(Math) 数组对象(Array) 字符串对象(String) 日期对象(Date) js对象是属性和方法的集合.JavaScript中的所有事物都是对象,如:字符串.数值.数组.函 ...

  5. Java可变长参数方法调用问题

    不说废话,直接上代码: package mytest; import java.util.List; public class TestClass { public void method(List& ...

  6. SQL数据类型大全 《转自网络》

    数据类型是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特点,所定义的数据类型的种类和名称都或多或少有些不同.SQLServer ...

  7. c#danliemosih

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 打印机 ...

  8. DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)

    DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...

  9. 【20160924】GOCVHelper 图像增强部分(2)

       //填充孔洞     //fillholes     Mat fillHoles(Mat src){         Mat dst = getInnerHoles(src);          ...

  10. Unity脚本在层级面板中的执行顺序测试4-附加整理

    测试4为一些附加内容,后续的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html ...