https://vjudge.net/problem/CodeForces-17E

http://codeforces.com/problemset/problem/17/E

题目大意:给一个长度为n的字符串,求不相交的回文串对数。

————————————————————————————

点击这里看大佬的题解。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 2000010
#define MOD 51123987
using namespace std;
typedef long long ll;
ll mx,id,p[2*N],f[2*N],g[2*N];
//g[i]以i为终点的回文串个数
//f[i]以i为起点的回文串个数
char s[2*N];
int main(){int l;scanf("%d%s",&l,s+1);s[0]='@';ll sum=0;for(int i=l;i>=1;i--)s[i*2]=s[i];for(int i=1;i<=2*l+1;i+=2)s[i]='#';s[2*l+2]='?';l=2*l+1;for(int i=1;i<=l;i++){if(mx>i)p[i]=min(p[2*id-i],mx-i);else p[i]=1;while(s[i-p[i]]==s[i+p[i]])p[i]++;if(i+p[i]>mx){mx=i+p[i];id=i;}sum+=(p[i]-1)>>1;if(i%2==0)sum++;sum%=MOD;}sum=sum*(sum-1)/2;for(int i=2;i<=l;i+=2){f[i-p[i]+2]++;f[i+2]--;g[i]++;g[i+p[i]]--;}for(int i=1;i<=l;i+=2){f[i-p[i]+2]++;f[i+1]--;g[i+1]++;g[i+p[i]]--;}for(int i=2;i<=l;i+=2){f[i]+=f[i-2];f[i]%=MOD;g[i]+=g[i-2];g[i]%=MOD;}f[l+1]=0;for(int i=l-1;i>=1;i-=2){f[i]+=f[i+2];f[i]%=MOD;}for(int i=2;i<=l;i+=2){sum-=g[i]*f[i+2]%MOD;sum=(sum+MOD)%MOD;}printf("%lld\n",(sum%MOD+MOD)%MOD);return 0;
}

转载于:https://www.cnblogs.com/luyouqi233/p/7978622.html

CF17E:Palisection——题解相关推荐

  1. [JS][dfs]题解 | #迷宫问题#

    题解 | #迷宫问题# 题目链接 迷宫问题 题目描述 定义一个二维数组 N*M ,如 5 × 5 数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1 ...

  2. [JS][dp]题解 | #打家劫舍(一)#

    题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...

  3. [JS]题解 | #魔法数字#

    题解 | #魔法数字# 题目链接 魔法数字 题目描述 牛妹给牛牛写了一个数字n,然后又给自己写了一个数字m,她希望牛牛能执行最少的操作将他的数字转化成自己的. 操作共有三种,如下: 在当前数字的基础上 ...

  4. [JS]题解 | #岛屿数量#

    题解 | #岛屿数量# 题目链接 岛屿数量 题目描述 时间限制:1秒 空间限制:256M 描述 给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右 ...

  5. [JS] 题解:提取不重复的整数

    题解:提取不重复的整数 https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1 时间限制:1秒 空间限制:32M 描述 输 ...

  6. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  7. [洛谷1383]高级打字机 题解

    题解 这道题一看就珂以用主席树啊 这是一道神奇的题目,那么我们先敲一个主席树,然后维护一个数组len,表示下一次应该在len + 1插入, 之后对于T操作,在上一个版本的len + 1上直接执行插入 ...

  8. luogu P1549 棋盘问题(2) 题解

    luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...

  9. 【题解搬运】PAT_L1-009 N个数求和

    从我原来的博客上搬运.原先blog作废. (伪)水题+1,旨在继续摸清这个blog(囧 题目 就是求N个数字的和.麻烦的是,这些数字是以有理数"分子/分母"的形式给出的,你输出的和 ...

最新文章

  1. zlmediakit DESCRIBE:404 Not Found
  2. 【Zookeeper】源码分析之服务器(一)
  3. git 常用命令笔记
  4. 字节跳动想取消大下周,遭到部分员工激烈反对
  5. 叔丁基氢醌(TBHQ)行业调研报告 - 市场现状分析与发展前景预测
  6. canvas 封装一个自己的 icon 库
  7. 计算机网络管理员是技能培训吗,计算机网络管理员(路由与交换) 专业简介
  8. 达梦8数据库安装教程
  9. cpu型号怎么看服务器,看不懂CPU?学会看CPU只要五分钟
  10. CorelDRAW2021新增功能及增强内容
  11. 腾讯WeTestTesterHome深圳线下沙龙
  12. 2022年NOC软件创意编程(学而思赛道)选拔赛小学高年级组python,包含答案
  13. iOS调用高德地图SDK
  14. 微信小程序RSA非对称加密。
  15. 【算法图解】第七章:7.5(狄克斯特拉算法优化版)
  16. AprilTag: A robust and flexible visual fiducial system论文解读
  17. eclipse 插件更新站点
  18. 【web前端特效源码】使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT编程
  19. linux内核 can总线,嵌入式Linux下CAN总线配置
  20. 黑马程序员golang_成为Go程序员的7个阶段

热门文章

  1. php鼠标经过显示文本,CSS_HTML和CSS做网页实例教程:鼠标滑过文字改变,关于HTML+CSS的实例效果很多, - phpStudy...
  2. administrator没有管理员权限_网络安全 之 NTFS安全权限
  3. 【AI白身境】学深度学习你不得不知的爬虫基础​​​​​​​
  4. 2021年跨境电商市场怎么样?新手商家入驻还有机会吗?
  5. 全球及中国一次性造口袋行业发展前景预测及投资价值分析报告2021-2027年版
  6. Python函数Day1
  7. JavaScript 原型链学习(二)原型的动态性
  8. 在有赞工作两年半的感受
  9. Java设计模式GOF之6大设计原则
  10. 18:等差数列末项计算