bzoj3676: [Apio2014]回文串

【超详细】安装了anaconda后,Ubuntu18+COLMAP配置疯狂踩坑踩至魔怔的记录 本博客收集了博主在Ubuntu18系统中编译COLMAP所遇到的困难,提供了解决方法,也收集了目前网上大多数的坑,除此之外,也为Ubuntu18系统下COLMAP的安装提供了一种新的路径。 阅读详情

传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3676

思路:首先要知道一个结论,本质不同的回文串的个数是O(n)的。

从manacher的过程就可以看出来,使最远边界扩展的回文串才是与之前本质不同的,边界只会扩展到n,所以个数是O(n)的

然后对于每个本质不同的字符串,在后缀数组里向上向下二分,找出它的出现次数即可得到答案。


(为什么正常的ST表TLE了....非得改成莫名其妙的O(logn)回答的才AC...)


#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
const int maxn=600010;
const double eps=1e-10;
using namespace std;
int n,t1[maxn],t2[maxn],rank[maxn],sa[maxn],sum[maxn],h[maxn],st[maxn>>1][20],f[maxn];char s[maxn],b[maxn];long long ans;

void getsa(){
	int *x=t1,*y=t2,p=0,m=255;
	for (int i=1;i<=n;i++) sum[x[i]=s[i]]++;
	for (int i=1;i<=m;i++) sum[i]+=sum[i-1];
	for (int i=1;i<=n;i++) sa[sum[x[i]]--]=i;
	for (int j=1;p<n;j<<=1,m=p){
		p=0;
		for (int i=n-j+1;i<=n;i++) y[++p]=i;
		for (int i=1;i<=n;i++) if (sa[i]>j) y[++p]=sa[i]-j;
		memset(sum,0,sizeof(sum));
		for (int i=1;i<=n;i++) sum[x[y[i]]]++;
		for (int i=1;i<=m;i++) sum[i]+=sum[i-1];
		for (int i=n;i;i--) sa[sum[x[y[i]]]--]=y[i];
		swap(x,y),x[sa[1]]=p=1;
		for (int i=2;i<=n;i++){
			if (y[sa[i]]!=y[sa[i-1]]||y[sa[i]+j]!=y[sa[i-1]+j]) p++;
			x[sa[i]]=p;
		}
	}
	memcpy(rank,x,sizeof(rank));
}

void geth(){
	for (int i=1,j=0;i<=n;i++){
		if (rank[i]==1) continue;
		while (s[i+j]==s[sa[rank[i]-1]+j]) j++;
		h[rank[i]]=j;
		if (j>0) j--;
	}
}

void getst(){
	for (int i=1;i<=n;i++) st[i][0]=h[i];
	for (int j=1;(1<<j)<=n;j++)
		for (int i=1;i+(1<<(j-1))-1<=n;i++)
			st[i][j]=min(st[i][j-1],st[i+(1<<(j-1))][j-1]);
}

inline int getmin(int l,int r){
	/*int k=log2(r-l+1);
    return min(st[l][k],st[r-(1<<k)+1][k]);*/
    int len=r-l+1,k=0,now=1;
    for (int i=0;i<=20;i++){
        if (now*2>=len){k=i;break;}
        now<<=1;
    }
    return min(st[l][k],st[r-(1<<k)+1][k]);
}

int query(int x,int k){
	int l,r,mid,ansl,ansr;
	if (h[x+1]<k) ansr=x;
	else{
		l=x+1,r=n;
		while (l<=r){
			mid=(l+r)>>1;
			if (getmin(x+1,mid)>=k) ansr=mid,l=mid+1;
			else r=mid-1;
		}
	}
	if (h[x]<k) ansl=x;
	else{
		l=1,r=x-1;
		while (l<=r){
			mid=(l+r)>>1;
			if (getmin(mid+1,x)>=k) ansl=mid,r=mid-1;
			else l=mid+1;
		}
	}
	return ansr-ansl+1;
}

void manacher(){
	int i,mx=1,id=1;
	for (b[0]='$',b[1]='#',i=1;i<=n;i++) b[i<<1]=s[i],b[(i<<1)|1]='#';
	n=(n<<1)|1;b[n+1]='\0';
	//printf("%s\n",b);
	for (int i=1;i<=n;i++){
		f[i]=min(f[(id<<1)-i],mx-i);
		for (;i>=f[i]&&b[i-f[i]]==b[i+f[i]];) f[i]++;
		f[i]--;
		if (i+f[i]>mx){
			for (int j=mx+1;j<=i+f[i];j++){
				if (!(j&1)){
					//printf("%d %d\n",j-i+1,query(rank[(i+i-j)>>1],j-i+1));
					ans=max(ans,1ll*(j-i+1)*query(rank[(i+i-j)>>1],j-i+1));
				}
				//printf("ans%d %lld\n",j,ans);
			}
			mx=i+f[i],id=i;
		}
	}
	printf("%lld\n",ans);
}

int main(){
	scanf("%s",s+1),n=strlen(s+1);
	getsa(),geth(),getst(),manacher();
	return 0;
}


《MPDIoU:边界框回归的高效革新与YOLOv8集成实战指南》 摘要: MPDIoU(多优先级距离IoU)通过引入中心距离、形状差异和尺度变化的三步优化策略,解决了传统IoU在目标检测中的尺度敏感、收敛低效和场景局限问题。相较于GIoU、DIoU等主流方法,MPDIoU在精度、速度和鲁棒性上实现全面提升,尤其在复杂场景和小目标检测中表现突出。通过代码集成和训练优化,MPDIoU在YOLOv8中显著提升COCO数据集AP指标,并在智能安防(密集行人检测)和工业质检(微小缺陷定位)等垂直领域验证了其应用价值。未来研究方向包括动态权重调整和多模态融合,进一步拓展边界框回归的精 阅读详情

相关推荐

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)1.可能是ESP STA模式未成功连接到路由器,确保 STA 成功连接到外部网络。2.检查 STA 和 AP 的网络配置是否正确,避免子网冲突。3.ESP32的NAPT功能未正确启用,确保 menuconfig 中已启用 IP_NAPT。4.DNS服务器未正确配置。

qq_34885669的博客 1539

hihoCoder 1602 本质不同的回文子串的数量(manacher+hash)

题目链接:http://hihocoder.com/problemset/problem/1602 解题思路: 跑马拉车的时候,对于单个字母单独考虑,然后匹配过程中,我们不管开始匹配未知位置之前的(代码74行),因为那一部分回文已经被统计过了,我们只需统计未匹配过的(代码77行),这其中可能有部分之前出现过,我们用哈希表去重一下。 如何利用哈希表去重?https://blog.csdn.ne...

shadiao.的博客 489

AI图像识别在临电配电箱安全检测中的应用与实践

计算机视觉与AI图像识别技术正逐步改变传统工业检测方式。通过深度学习模型如YOLOv5和ResNet,系统能自动识别设备元件并分析其状态,大幅提升检测效率和准确性。这种技术特别适用于需要严格遵循行业标准的场景,如临电配电箱的安全检测。将《施工现场临时用电安全技术规范》等条文转化为可量化的算法,AI系统能自动检查PE线连接、漏保功能等关键项目。实际应用表明,此类解决方案可使电气事故率下降90%以上,同时检测耗时缩短80%,为工地安全提供了智能化保障。

weixin_29042035的博客 328

回文自动机(回文树)

一、不挣扎了,直接背。         首先,回文树有何功能? 假设我们有一个串S,S下标从0开始,则回文树能做到如下几点: 1.求串S前缀0~i内本质不同回文串的个数(两个串长度不同或者长度相同且至少有一个字符不同便是本质不同) 2.求串S内每一个本质不同回文串出现的次数 3.求串S内回文串的个数(其实就是1和2结合起来) 4.求以下标i结尾的回文串的个数     ...

_Griefs 854

N32G003学习——第九章 第三节1 串口 发送

经过第九章前2节的学习,基础打下之后,开始敲代码。

qq_34525008的博客 1030

雷电模拟器+Python 3.11:手把手教你用Frida-dexdump给安卓APK脱壳(附GDA查壳)

本文详细介绍了如何使用雷电模拟器和Python 3.11配合Frida-dexdump工具进行安卓APK脱壳的全流程。从环境配置、工具安装到脱壳操作和问题排查,提供了包含30+关键截图的保姆级教程,适合零基础用户快速上手。重点讲解了Frida工具链的使用技巧和GDA查壳方法,帮助读者掌握移动应用安全分析的基础技能。

weixin_42568801的博客 326

【BZOJ5036】【JSOI2014】回文串

【题目链接】点击打开链接【思路要点】在每两个字符间插入#(例如:“AAB”\(\Rightarrow\)“#A#A#B#”)。用Manacher算法求出上述字符串每个字符为中心的最长回文子串的长度\(l_i\)。记\(len_i=\frac{l_i+1}{2}\),不难发现\(len_i\)即为只算一边的字符时最长回文子串的长度,也即回文串的个数。现在考虑每一个询问\([L,R]\),我们将其变为...

cz_xuyixuan的博客 550

输入文件(Example-1.inp)参数解读与获取方法

弹性参数:优先使用默认值(泊松比 0.25、杨氏模量 8×10⁵ bars),或参考区域地质 / 地球物理研究。断层参数:从地震矩反演、GPS 位移反演、地质图 / 震源机制获取(核心参数,需确保准确性)。网格 / 图形参数:根据研究区范围和输出需求调整(步长 / 放大系数等)。

2301_79258000的博客 81

回文自动机题解

HYSBZ - 3676 题意:考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最 大出现值。 分析:直接用rcnt[] 数组和 len[] 数组 作乘法 取MAX 即可 #include <cstdio> #include <cstdlib> #include <cs...

我歌月徘徊,我舞影零乱 335

【Python基础】FastAPI 从入门到项目实战操作详解

【Python基础】FastAPI从入门到使用实战操作详解

congge_study的博客 437

30. 用GPT-4自动生成测试用例的完整流程

利用GPT - 4生成测试用例面临的主要问题包括:如何准确地将软件需求转化为GPT - 4能够理解的输入提示,以确保生成的测试用例覆盖所有关键功能;如何评估生成的测试用例的有效性和充分性;如何处理生成的测试用例中的错误或不合理之处;以及如何将生成的测试用例集成到现有的测试框架中。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 472

[jzoj3866]【JSOI2014】回文串

Solution 首先 manacher 求出以 i 为中心的回文串长度 FiFiF_i 容易发现 Ans=∑i=LRmin(R−i+1,i−L+1,Fi)Ans=∑i=LRmin(R−i+1,i−L+1,Fi)Ans=\sum_{i=L}^{R} min(R-i+1,i-L+1,F_i) 为减少限制 拆分每个询问为(L,m)(m+1,R)(L,m)(m+1,R)(L,m)(m+1,R) ...

FarmerJohn 477

《嵌入式-STM32开发指南》第三部分 外设篇 - 第2章 温度传感器DS18B20

2.1 理论分析 2.1.1概述 DS18B20 是 DALLAS 最新单线数字温度传感器,新的"一线器件"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 "一线总线"接口的温度传感器。 DS18B20采用的单总线协议,也就是只需占用主机一个I/O口,无需其他外围电路,直接将环境温度转换为数字信号,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。另外,以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量

不问归期的博客 8304

BZOJ 3676: [Apio2014]回文串 回文串自动机

裸的回文串自动机 3676: [Apio2014]回文串 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 504  Solved: 152 [Submit][Status][Discuss] Description 考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出  现值”为t在s中的出现次数乘以t的

码代码的猿猿 1420

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

bzoj 3676: [Apio2014]回文串 回文自动机

bzoj 3676: [Apio2014]回文串 Description 考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最 大出现值。 Input 输入只有一行,为一个只包含小写字母(a -z)的非空字符串s。 Output 输出一个整数,为逝查回文子串的最大出现值。

maxtir的博客 290

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Bzoj3676:[Apio2014]回文串:回文自动机

题目链接:3676:[Apio2014]回文串 回文自动机复习一发! 话说我的会回文自动机入门题居然不是这个?! #include #include #include #include #include #define LL long long using namespace std; const int maxn=600010; char s[maxn]; int cnt[maxn];

蜜の夜明け 748

BZOJ3676: [Apio2014]回文串

比较重要的结论:一个字符串内本质不同的回文串的级别是 O(n)的,因为manacher的时候每次暴力扩展出来的回文串才是新的回文串,最多扩展O(n)次。 所以我们可以对所有本质不同的回文串在后缀数组/后缀自动机上求一下出现了多少次即可… 注意注意注意manacher不要写错…>_<… SA:#include<cmath> #include<cstdio> #include<cstring>

MirrorGray的博客 1072

BZOJ 3676: [Apio2014]回文串 回文自动机

BZOJ 3676: [Apio2014]回文串 回文自动机 Code: #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;algorithm&gt; #define ll long long #define N 300005 #define maxn 300005 ...

EM LGH 152

BZOJ 3676: [Apio2014]回文串

3676: [Apio2014]回文串 Time Limit:20 SecMemory Limit:128 MBSubmit:904Solved:356 Description 考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最大出现值。 Input 输入只有...

weixin_30379531的博客 96

BZOJ 3676: [Apio2014]回文串 回文自动机模板

3676: [Apio2014]回文串 Time Limit:20 SecMemory Limit:128 MB Submit:4762Solved:2279 [Submit][Status][Discuss] Description 考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最...

pxlsdz的博客 261

bzoj 3676: [Apio2014]回文串

Description 考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最 大出现值。 Input 输入只有一行,为一个只包含小写字母(a -z)的非空字符串s。 Output 输出一个整数,为逝查回文子串的最大出现值。 Sample Input 【样例输入l】 abacaba 【样例输入2] www Samp...

Top_xiao的博客 229

BZOJ [3676: [Apio2014]回文串]

题意: 考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最大出现值。 题解: 回文自动机水题,注意插入字符时求出的cnt数组并不是最后的出现次数,而应该还要加上以它为后缀的回文,也就是所有fail指向它的节点的贡献。 ACACAC代码: #include<bits/stdc++.h> using na...

qq_43544481的博客 194
上一篇: bzoj1031: [JSOI2007]字符加密Cipher
下一篇: codeforces 232D. Fence
thy_asdf
博客等级 码龄12年 16粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值