bzoj3160: 万径人踪灭

数组开小gg

fft乱搞就可以了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const LL mod=1e9+7; 
const double pi=acos(-1.0);struct complex
{double r,i;complex(){}complex(double R,double I){r=R,i=I;}friend complex operator +(complex x,complex y){return complex(x.r+y.r,x.i+y.i);}friend complex operator -(complex x,complex y){return complex(x.r-y.r,x.i-y.i);}friend complex operator *(complex x,complex y){return complex(x.r*y.r-x.i*y.i,x.r*y.i+x.i*y.r);}
}A[410000]; int Re[410000];
void fft(complex *a,int n,int op)
{for(int i=0;i<n;i++)if(i<Re[i])swap(a[i],a[Re[i]]);for(int i=1;i<n;i<<=1){complex wn(cos(pi/i),sin(op*pi/i));for(int j=0;j<n;j+=(i<<1)){complex w(1,0);for(int k=0;k<i;k++,w=w*wn){complex t1=a[j+k],t2=a[j+k+i]*w;a[j+k]=t1+t2;a[j+k+i]=t1-t2;}}}
}int a[410000],d[410000];
void solve(int len)
{len++;memset(A,0,sizeof(A));for(int i=0;i<len;i++)A[i].r=double(a[i]);int n,m=len*2,L=0;for(n=1;n<=m;n*=2)L++;for(int i=1;i<=n;i++)Re[i]=(Re[i>>1]>>1)|((i&1)<<(L-1));fft(A,n,1);for(int i=0;i<=n;i++)A[i]=A[i]*A[i];fft(A,n,-1);for(int i=0;i<=n;i++)d[i]+=(int(A[i].r/double(n)+0.5)+1)/2;
}char ss[410000];
int sa[410000],p[410000];
LL manacher(int n)
{int len=0; sa[++len]=0;for(int i=1;i<=n;i++)sa[++len]=ss[i]-'a'+1, sa[++len]=0;int k=1;p[1]=1;for(int i=2;i<=len;i++){int L=k-p[k]+1,R=k+p[k]-1;int j=k-(i-k);if(R>=i)p[i]=min(p[j],j-L+1);else p[i]=0;while(i-p[i]>0&&i+p[i]<=len&&sa[i+p[i]]==sa[i-p[i]])p[i]++;if(i+p[i]-1>k+p[k]-1)k=i;}LL ret=0;for(int i=1;i<=len;i++)if(i%2==1)ret=(ret+(p[i]-1)/2)%mod;else ret=(ret+p[i]/2)%mod;return ret;
}LL quick_pow(LL A,LL p) 
{LL ret=1;while(p!=0) {if(p%2==1)ret=ret*A%mod;A=A*A%mod;p/=2;}return ret; 
}
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);scanf("%s",ss+1); int n=strlen(ss+1);LL ddd=manacher(n); a[0]=0;for(int i=1;i<=n;i++)a[i]=ss[i]-'a'; solve(n);for(int i=1;i<=n;i++)a[i]^=1;         solve(n);LL sum=0;for(int i=2;i<=n*2;i++){sum=(sum+quick_pow(2,d[i])-1+mod)%mod;}printf("%lld\n",((sum-ddd)%mod+mod)%mod);return 0;
}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/10113519.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光辉岁月:人工智能的那些人和事(1)

来源&#xff1a;图灵人工智能源头茫昧虽难觅&#xff0c;活水奔流喜不休。——法国数学家亨利庞加莱&#xff08;Henri Poincare&#xff09;目前&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;正在迅速崛起。现已面世的AI应用&#xff…

MySQL主从架构及读写分离实战

​​​​​​ 目录 一、实验目的与环境 二、基础环境介绍 三、搭建主从集群 1、理论基础 2、同步的原理 3、搭建主从集群 3.1 配置master主服务器 3.2 配置slave从服务 3.3 主从集群测试 3.4 集群搭建扩展&#xff1a; 3.5、GTID同步集群 4、集群扩容 5、半同步复…

C++基本数据类型

1.C对基本的数据类型进行了封装&#xff0c;成为内置数据类型。 2.有符号整数在内存中存放为补码&#xff0c;无符号整数在内存中存放为原码&#xff1b; Visual C 基本数据类型类型占用字节数名称占用比特位数bool1布尔型8(signed) char1有符号字符型8unsigned char1无符号字…

编译原理课程实践——实现一个初等函数运算语言的解释器或编译器

编译原理课程实践——实现具有初等函数运算语言的解释器或编译器 作者&#xff1a;Sylvan Ding &#xff5c;转载请注明文章出处&#xff01; 摘要&#xff1a;本文主要内容是设计词法分析器、语法分析器&#xff08;LL(1)、SLR(1)&#xff09;和语义分析器&#xff08;基于SL…

数据结构开发(3):线性表的顺序存储结构

0.目录 1.线性表的本质和操作 2.线性表的顺序存储结构 3.顺序存储结构的抽象实现和具体实现 3.1 SeqList3.2 StaticList 和 DynamicList4.顺序存储线性表的分析 4.1 效率分析4.2 功能分析5.小结 1.线性表的本质和操作 线性表 ( List ) 的表现形式&#xff1a; 零个或多个数据元…

小目标检测的一些问题,思路和方案

来源&#xff1a;机器学习研究组订阅机器学习正越来越多地进入我们的日常生活。从个人服务的广告和电影推荐&#xff0c;到自动驾驶汽车和自动送餐服务。几乎所有的现代自动化机器都能“看”世界&#xff0c;但跟我们不一样。为了像我们人类一样看到和识别每个物体&#xff0c;…

python-条件语句

#条件、循环和其他语句 #print:可以打印多个表达式&#xff0c;表达式之间用逗号隔开 print(a,"b",False)#参数并不构成一个元组 模块导入:import x :导入模块xfrom x import func &#xff1a;导入模块x的函数funcfrom x import func1,func2,... 导入模块…

第21条:用函数对象表示策略

第21条&#xff1a;用函数对象表示策略 有些语言支持函数指针&#xff08;function pointer&#xff09;、代理&#xff08;delegate&#xff09;、lambda表达式&#xff08;lambda expression&#xff09;&#xff0c;或者支持类似的机制&#xff0c;允许程序把“调用特殊函数…

2021-2022学年编译原理考试重点[华侨大学]

2021-2022学年编译原理考试重点 注&#xff1a;计算部分请参考 编译原理实验报告 名词解释 编译器&#xff1a;编译阶段&#xff0c;用户输入源程序&#xff0c;经编译器翻译生成目标程序&#xff0c;目标程序在运行时接受输入数据&#xff0c;得到数据输出 解释器&#xff1a…

一文读懂全球半导体市场

来源&#xff1a;深城物联作者&#xff1a;孙卓异&#xff0c;供职于赛迪顾问集成电路产业研究中心 半导体是当今信息技术产业高速发展的基础和原动力&#xff0c;已经高度渗透并融合到了经济、社会发展的各个领域&#xff0c;其技术水平和发展规模已经成为衡量一个国家产业竞争…

如何写好一份技术简历?

写简历的基本目的和策略 大部分情况下&#xff0c;写简历是找工作的第一步&#xff0c;考虑到第二步就是面试&#xff0c;那么简历就是敲门砖&#xff0c;为了让企业认识到你的价值&#xff0c;必须把自己的真实水平描述出来&#xff0c;展现出你有能力应对这份工作。甚至要体现…

这是我看过最全的工业机器人知识介绍 !

来源&#xff1a;产业智能官编者按工业机器人广泛使用在产业制造上&#xff0c;汽车制造、电器、食品等&#xff0c;能替代反复机器式操纵工作&#xff0c;是靠本身动力和控制才能来实现种种功用的一种机器。它能够承受人类指挥&#xff0c;也能够按照事先编排的程序运转。今天…

表白网站|程序猿的爱情记录网站模版|情侣日记网页

程序猿的爱情记录网站模版&#xff5c;情侣日记网页设计 介绍 我为我的女朋友制作了这个主页&#xff0c;目的是记录一些值得纪念的时刻。 如果需要&#xff0c;您可以复制和修改此模板作为送给女朋友或妻子的礼物。 Demo Click here to review the website! ❤️ https://…

python-字符串方法

#find方法&#xff1a;查找子串&#xff0c;返回子串所在位置的最左端索引&#xff0c;如果没有找到则返回-1 s"agsa" print(s.find("gs")) print(s.find("agsaa")) #可以指定匹配的起始点和结束点参数,包含第一个索引&#xff0c;不包含第二个索…

智慧食堂数据分析系统

智慧食堂数据分析系统&#xff5c;大数据分析&#xff5c;数据可视化 Demo Repo&#xff1a;https://github.com/sylvanding/AI-Restaurant-Data-Analysis项目演示&#xff08;模拟真实运行环境&#xff09;&#xff1a;http://analysis.sylvanding.online数据展示静态页面&am…

鸿蒙系统全面解析,诞生背景、技术细节生态圈一文看懂

编辑&#xff1a;智东西内参华为6月2日正式发布的鸿蒙系统无疑占据了最近热点话题的C位&#xff0c;虽然不全是赞美的声音&#xff0c;但这种努力打破美国垄断&#xff0c;挑战谷歌、苹果在移动操作系统上垄断地位的尝试必将成为中国科技史上的里程碑事件。本期的智能内参&…

python-字典

字典映射&#xff1a;通过名字来引用值&#xff1b;字典是python中唯一内建的映射类型&#xff1b;1)创建字典&#xff1a;字典有键-值对(项)组成&#xff0c;键和值之间通过冒号(:)隔开&#xff0c;项之间通过逗号(,)分割&#xff0c;整个字典由大括号括起来&#xff1b;空字典…

2021十大人工智能趋势

来源&#xff1a;雷锋网6月5日&#xff0c;以“交叉、融合、相生、共赢”为主题的2021全球人工智能技术大会&#xff08;GAITC 2021&#xff09;在杭州举行。会上&#xff0c;腾讯优图联合厦门大学人工智能研究院共同发布《2021十大人工智能趋势》&#xff08;以下简称“趋势报…

通过CTY、VTY、TTY访问网络设备[计网实践Cisco Packet Tracer]

实验一&#xff1a;接入网络设备 学习目标 CTY访问网络设备VTY访问网络设备TTY访问网络设备WEB访问网络设备 实验环境 Cisco Packet Tracer 6.0 原创文章&#xff0c;转载请注明出处&#xff1a;©️Sylvan Ding ❤️ 实验内容 CTY访问设备 CTY是指通过Console接口访…

python-字符串格式化

1)字符串格式化format代表格式字符串&#xff0c;格式&#xff1a;format%x&#xff0c;x为被格式化的值&#xff0c;如果需要在格式化字符串中包括百分号&#xff0c;必须使用%%&#xff1b;format"Hello,%s.%s!" values(world,python) print(format%values)format&…