标题被工藤新一拼死保护/泪目

求好元素

枚举 i , 把所有的 ai1+aj(j<i) 存入哈希表 , 只算 ai1 是因为只算了从 i1 移到 i 的贡献
然后再枚举 p(p<i) 判断 aiap 的值是否在哈希表里

回文分区

从两边往中间找

unsigned long long val(int l,int r){
	return h[r]-h[l-1]*p[r-l+1];
}
                int lstl=1,lstr=len;
		for(int l=1,r=len;l<r;l++,r--){
			if(val(lstl,l)==val(r,lstr)){
				ans+=2,lstl=l+1,lstr=r-1;
			}
		}  

周期长度和

到 i 的周期长度: ip[i]

所以,如果 n%(n-p[n])==0 则有循环节

子串拆分

前缀数组

一个结论:
一个串 (1i) 前后缀相等的个数 = 从 i 开始跳 p 一直跳到 j=0 的跳的次数

所以可以记一个 cnt 数组 cnt[i+1]=cnt[j]+1

posted @   小惰惰  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
/* 鼠标点击求赞文字特效 */
点击右上角即可分享
微信分享提示