最小表示法学习笔记
字符串的最小表示
假设我们有一个字符串
对于
正常暴力求法:求出所有字符串,暴力判断字典序。复杂度
但是!这里有一种
设变量
我们还是暴力比对两个字符串,设第
假设是
证明一下:假设
当
代码实现
int i=1,j=2,k;
while(i<=n&&j<=n){
k=0;
while(k<n){
if(c[i+k]!=c[j+k]) break;
else k++;
}
if(k==n){
break;
}
if(c[i+k]>c[j+k]){
i+=k+1;
if(i==j) i++;
}else{
j+=k+1;
if(i==j) j++;
}
}
树的最小表示
对于每个节点,求出其所有子树的最小表示,按字典序排序后连接在一起,再处理一下根节点即可。
本文来自博客园,作者:Aurora_Borealis,转载请注明原文链接:https://www.cnblogs.com/Aurora-Borealis-Not-Found/p/17026151.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10亿数据,如何做迁移?
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 易语言 —— 开山篇
· Trae初体验