sequence(2018.10.23)
2024-09-08 08:19:00
建出差分序列,可以发现最早出现的回文串就是答案,自己想想就懂了。
\(O(N)\)找出回文串就好了,字符串\(hash\)或者\(manacher\)都能在合法时间内得到答案。
#include<cstdio>
#include<algorithm>
using namespace std;
const int mod=1e9+7;
int flag,n,d[2000001],pos[2000001],h[20000001],q[20000002],k=233;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&d[i]),d[i+n]=d[i];
for(int i=1;i<2*n;i++)d[i]=d[i+1]-d[i]+1000000;
pos[0]=1;if(n<3){printf("0\n");return 0;}
for(int i=1;i<2*n;i++)pos[i]=(1ll*pos[i-1]*k)%mod;
for(int i=1;i<2*n;i++)h[i]=(1ll*h[i-1]*k+d[i])%mod;
for(int i=2*n-1;i>=1;i--)q[i]=(1ll*q[i+1]*k+d[i])%mod;
for(int i=n-1;i<2*n;i++)
{
int a=(h[i]-1ll*h[i-n+1]*pos[n-1]%mod+mod)%mod,b=(q[i-n+2]-1ll*q[i+1]*pos[n-1]%mod+mod)%mod;
if(a==b){printf("%d\n",i-n+1);return 0;}
}
printf("IMPOSSIBLE\n");
}
最新文章
- 参加2013中国大数据技术大会(BDTC2013)
- [Js]滑动门效果
- 深入浅出Spring(四) Spring实例分析
- eclipse 分屏
- mysql 主从同步配置
- jdk各个版本的特性
- python爬行动物集合360联想词搜索
- PHP 13: 类
- BZOJ 4089:[Sdoi2015]graft(SDOI 2015 Round 2 Day 2)
- 《principles of model checking》中的离散时间马尔科夫链
- MySQL分区表与合并表
- jquery 蔚蓝网
- delphi中 panel如何在Form实现鼠标移动拖放
- [复习]动态dp
- Kibana简介及下载安装
- 身在上海的她,该不该继续";坚持";前端开发?
- Redis五种数据结构简介-2
- Discuz!X 3.4 任意文件删除漏洞复现过程(附python脚本)
- springmvc 简单框架
- sort函数(cmp)、map用法---------------Tju_Oj_2312Help Me with the Game