牛客挑战赛48 F 小丑生产值

SpringBoot和Vue哈尔滨文旅系统源码 包含前后端源码、SQL初始化脚本和启动说明。JDK 17、Spring Boot、Vue;默认H2演示数据库。 立即下载

有一个很显然的结论,一个周期串一定是一个本原平方串,否则字典序不优。所以先进行一次Lyndon分解,求出以每个字符开头的最短本原平方串,最后求前缀最小串即可。中途求字符串LCS、LCP以及比大小都可以用二分哈希来实现。
时间复杂度 O(nlog⁡2n+m)O(n \log_2n +m)O(nlog2​n+m),空间复杂度 O(n)O(n)O(n)

#include<stdio.h>
#include<string.h>
#define R register int
#define C const int
#define I inline
#define N 500002
#define P 1000000009
I void Min(int&x,C y){
	if(x>y){
		x=y;
	}
}
char s[N];
int h[N],pw[N],rt[N],len[N],ansl[N],ansr[N],st[N],lazy[2000000];
I int GetHash(int l,int r){
	int t=h[r]-(long long)h[l-1]*pw[r-l+1]%P;
	return t<0?t+P:t;
}
I int GetLCP(int x,int y,int&n){
	if(s[x]!=s[y]){
		return 0;
	}
	int l=0,ans=0,mid,r=n-(x>y?x:y);
	while(l<=r){
		mid=l+r>>1;
		if(GetHash(x,x+mid)==GetHash(y,y+mid)){
			ans=mid;
			l=mid+1;
		}else{
			r=mid-1;
		}
	}
	return ans+1;
}
I int GetLCS(int x,int y){
	if(s[x]!=s[y]){
		return 0;
	}
	int l=0,ans=0,mid,r=(x<y?x:y)-1;
	while(l<=r){
		mid=l+r>>1;
		if(GetHash(x-mid,x)==GetHash(y-mid,y)){
			ans=mid;
			l=mid+1;
		}else{
			r=mid-1;
		}
	}
	return ans+1;
}
I bool Compare(int l1,int r1,int l2,int r2,int&n){
	int len=GetLCP(l1,l2,n);
	if(len>r1-l1||len>r2-l2){
		return r1-l1<r2-l2;
	}
	return s[l1+len]<s[l2+len];
}
I void Init(int p,int lf,int rt){
	lazy[p]=N;
	if(lf!=rt){
		Init(p<<1,lf,lf+rt>>1);
		Init(p<<1|1,lf+rt+2>>1,rt);
	}
}
I void Modify(int p,int lf,int rt,C l,C r,C d){
	if(l<=lf&&rt<=r){
		Min(lazy[p],d);
	}else{
		int mid=lf+rt>>1;
		if(l<=mid){
			Modify(p<<1,lf,mid,l,r,d);
		}
		if(r>mid){
			Modify(p<<1|1,mid+1,rt,l,r,d);
		}
	}
}
I void Release(int p,int lf,int rt,int pre){
	Min(pre,lazy[p]);
	if(lf==rt){
		len[lf]=pre;
	}else{
		Release(p<<1,lf,lf+rt>>1,pre);
		Release(p<<1|1,lf+rt+2>>1,rt,pre);
	}
}
I void GetRuns(int&n){
	int Top=0,r,p,cl,cr;
	st[Top]=n+1;
	for(R i=n;i!=0;i--){
		while(Top!=0&&Compare(i,st[Top]-1,st[Top],st[Top-1]-1,n)==true){
			Top--;
		}
		r=st[Top]-1;
		p=r-i+1;
		cl=i-GetLCS(i-1,r);
		cr=r+GetLCP(i,r+1,n);
		if(cr-cl+1>=p<<1){
			Modify(1,1,n,cl,cr-(p<<1)+1,p);
		}
		Top++;
		st[Top]=i;
	}
}
int main(){
	pw[0]=1;
	scanf("%s",s+1);
	int n=strlen(s+1);
	Init(1,1,n);
	for(R i=1;i<=n;i++){
		pw[i]=29ll*pw[i-1]%P;
		h[i]=(29ll*h[i-1]+s[i]-'a')%P;
	}
	GetRuns(n);
	for(R i=1;i<=n;i++){
		s[i]='a'+'z'-s[i];
	}
	GetRuns(n);
	for(R i=1;i<=n;i++){
		s[i]='a'+'z'-s[i];
	}
	Release(1,1,n,N);
	for(R i=1;i<=n;i++){
		if(len[i]==N){
			ansl[i]=ansl[i-1];
			ansr[i]=ansr[i-1];
		}else{
			ansl[i]=i;
			ansr[i]=i+(len[i]<<1)-1;
			if(ansl[i-1]!=0&&Compare(i,ansr[i],ansl[i-1],ansr[i-1],n)==false){
				ansl[i]=ansl[i-1];
				ansr[i]=ansr[i-1];
			}
		}
	}
	scanf("%d",&n);
	for(R i=n;i!=0;i--){
		scanf("%d",&n);
		if(ansl[n]==0){
			puts("-1");
		}else{
			printf("%d %d\n",ansl[n],ansr[n]);
		}
	}
	return 0;
}
产业园区在推动科技成果转化过程中,如何实现企业与高校的精准对接?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

项目实战:用西门子S7协议开发基于PLC的上位机.pdf

项目实战:用西门子S7协议开发基于PLC的上位机.pdf

该数据集收录了国内主要期货商品和股指指数的日频行情 商品期货覆盖有色、黑色、能化、农产品等板块,包含铜、螺纹钢、原油、豆粕等活跃合约 股指指数部分涵盖沪深300、上证50、中证500等品种 每个品种提

该数据集收录了国内主要期货商品和股指指数的日频行情。商品期货覆盖有色、黑色、能化、农产品等板块,包含铜、螺纹钢、原油、豆粕等活跃合约。股指指数部分涵盖沪深300、上证50、中证500等品种。每个品种提供统一字段:合约代码、交易日期、开盘价、最高价、最低价、收盘价、结算价、成交量和持仓量。数据按交易日顺次排列,未做复权处理,直接反映交易所原始发布信息。 数据源:CMES金融数据库

产业园区如何高效挖掘企业技术需求并促进精准匹配?.docx

产业园区如何高效挖掘企业技术需求并促进精准匹配?

KernelSU.zip

KernelSU.zip

国央企创新负责人如何降低科技成果转化服务成本并提升资源配置效率?.docx

国央企创新负责人如何降低科技成果转化服务成本并提升资源配置效率?

数字政府政务数据治理服务平台方案.pptx

数字政府政务数据治理服务平台方案.pptx

产业园区运营负责人如何精准匹配产业需求与科技成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

建筑工程业AI知识库平台规划方案(决策评审版)终稿.pptx

建筑工程业AI知识库平台规划方案(决策评审版)终稿.pptx

单相PWM整流器基于直流电流控制+虚拟dq两种闭环控制仿真【2个仿真+参考资料】

内容概要:本文介绍了单相PWM整流器的两种闭环控制策略仿真研究,即基于直流电流控制和虚拟dq变换的闭环控制方法。资源包含两个独立的Simulink仿真模型及相关参考资料,旨在对比和分析两种控制策略在动态响应、稳态精度及抗干扰能力等方面的性能差异。通过构建完整的主电路、控制回路与信号处理模块,展示了如何实现单位功率因数运行、直流侧电压稳定控制以及交流侧电流正弦化等关键目标,适用于电力电子变换器控制系统的学习与科研验证。; 适合人群:电气工程、自动化及相关专业的研究生、科研人员以及从事电力电子与新能源系统开发的工程师,具备一定的电路理论、自动控制原理和Simulink仿真基础者更佳。; 使用场景及目标:①深入理解单相PWM整流器的工作原理及其闭环控制机制;②掌握直流电流控制与虚拟dq控制两种方法的设计思路与实现步骤;③为相关课题的仿真建模、算法优化与论文写作提供参考依据和技术支持; 阅读建议:建议结合仿真模型与参考资料同步学习,重点分析控制器参数整定过程、坐标变换环节的实现方式,并尝试修改负载条件或输入扰动以测试系统鲁棒性,从而加深对控制策略本质的理解。

科技中介服务机构如何降低服务成本并提升服务响应速度?.docx

科技中介服务机构如何降低服务成本并提升服务响应速度?

科技中介服务机构如何利用智能工具提升技术需求挖掘与分析效率?.docx

科技中介服务机构如何利用智能工具提升技术需求挖掘与分析效率?

三电平Buck直流变换器双闭环、单闭环、开环仿真【附参考文献】(Simulink仿真实现)

内容概要:本文详细介绍了一套针对三电平Buck直流变换器的Simulink仿真资源,全面涵盖了开环、单闭环及双闭环控制策略的建模与仿真过程,并提供了配套参考文献以增强学术支撑。通过该仿真平台,用户能够深入理解不同控制方式对变换器输出稳定性、动态响应速度以及抗干扰能力的影响机制,尤其适用于高效率、低纹波直流电源系统的设计与性能优化研究。文档还列举了多种相关电力电子变换器的仿真案例,如三相交错并联Buck、双向Buck-Boost、LLC谐振变换器等,充分展现了电力电子系统在拓扑结构和控制技术方面的多样性与先进性,为科研与工程实践提供丰富的技术参考。; 适合人群:电气工程、自动化、电力电子及相关专业的本科生、研究生,以及从事电力变换系统研发的工程技术人员。; 使用场景及目标:① 掌握Buck类变换器的工作原理及其典型控制策略的设计方法;② 开展电力电子系统的建模与仿真实验,优化控制器参数;③ 支持课程设计、毕业设计或科研项目中的系统验证环节;④ 借助提供的仿真模板与文献资料快速搭建实验环境,提升科研效率与创新能力。; 阅读建议:建议读者结合MATLAB/Simulink环境动手实践,按照文档逐步构建仿真模型,重点剖析双闭环控制系统中电压环与电流环之间的耦合关系与协调机制,同时可拓展学习文中提及的其他变换器拓扑与先进控制方法,构建完整的电力电子系统控制知识体系。

科技中介服务机构在提供成果转化服务时,如何提升服务的专业性与客户粘性?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

二维导航网格算法可视化

二维导航网格算法可视化

医疗卫生业AI知识库数据处理及大模型训练平台规划设计方案.pptx

医疗卫生业AI知识库数据处理及大模型训练平台规划设计方案.pptx

产业园区运营负责人如何实现园区内创新资源的高效整合?.docx

产业园区运营负责人如何实现园区内创新资源的高效整合?

新版课件清华大学机器学习课件-012 第十二讲 条件随机场.pdf

新版课件清华大学机器学习课件-012 第十二讲 条件随机场

【tensorrt】——深入解析TypeError: pybind11::init()报错:CUDA版本冲突与解决方案

本文深入解析了TensorRT中常见的TypeError: pybind11::init()报错问题,重点探讨了CUDA版本冲突的根源与解决方案。通过实际案例展示了PyTorch与TensorRT的版本兼容性问题诊断方法,并提供了conda环境管理、环境变量配置等实用修复技巧,帮助开发者有效解决CUDA初始化失败问题。

ggg99的专栏 272
上一篇: 拟阵深造 遗忘的记忆
下一篇: 牛客挑战赛49 G Ok起飞
Defener
博客等级 码龄6年 8粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值