首页 > 其他分享 >manacher学习笔记

manacher学习笔记

时间:2024-05-20 19:53:32浏览次数:34  
标签:manacher 两边 mid 笔记 学习 while 拓展 mr 回文

小学一下。

首先是用一个在回文串题目中的的技巧,用来减少分讨,如果想到这个的话说不定thusc2024 d1t1就切了。具体来说,就是在每个字符之间都插入一个#,然后在开头和结尾插入随便两个不同的字符。然后就只有回文中心在字符上的情况了。

首先设\(p_{i}\)为当前位置为中心的最大回文半径。mr为当前做到的回文串的右端点,mid为当前做到的回文串的中心。
首先i肯定大于mid,因为根据代码,mid由i更新,而i是一直在前进的
分两类讨论:

mid<i<mr

p[i]=min(p[mid*2-i],mr-i+1);
分两部分解释。设j为i关于mid的对称点,ml为mr关于mid的对称点。如果i+p[j]>mr,那么我们不能保证[i-p[j],i+p[j]]是回文串,所以为mr-i+1。否则根据对称性,p[i]就等于p[j]

i>=mr

直接暴力向两边拓展即可。

时间复杂度证明

如果当前p[i]==p[j]那么说明不能向两边拓展了,就不会进到while里去。如果当前p[i]=mr-i+1,那么就可能向两边拓展,同时更新mr。向两边拓展也更新了mr,所以每次的while循环都对应着mr的拓展,每次mr的拓展都对应着while循环,因为mr最多为len,那么最多进len次while,所以时间复杂度线性

标签:manacher,两边,mid,笔记,学习,while,拓展,mr,回文
From: https://www.cnblogs.com/wuhupai/p/18202691

相关文章

  • Java基础 韩顺平老师的 常用类 的部分笔记
    459,八大Wrapper类包装类的分类 1)针对八种基本数据类型相应的引用类型—包装类 2)有了类的特点,就可以调用类中的方法。  460,装箱和拆箱 packagecom.hspedu.Wrapper;publicclassWrapperType{publicstaticvoidmain(String[]args){//演示......
  • 机器学习中的正则化技术——Python实现
    在机器学习中,我们非常关心模型的预测能力,即模型在新数据上的表现,而不希望过拟合现象的的发生,我们通常使用正则化(regularization)技术来防止过拟合情况。正则化是机器学习中通过显式的控制模型复杂度来避免模型过拟合、确保泛化能力的一种有效方式。如果将模型原始的假设空间比作“......
  • mit6.828笔记 - lab4 Part B:写时复制Fork
    PartBCopy-on-WriteForkUnix提供 fork() 系统调用作为主要的进程创建基元。fork()系统调用复制调用进程(父进程)的地址空间,创建一个新进程(子进程)。不过,在调用 fork() 之后,子进程往往会立即调用 exec(),用新程序替换子进程的内存。例如,shell通常就是这么做的。在这种情况......
  • Android Binder 学习
    AndroidBinderAndroid作为多进程操作系统,每个功能模块都是一个独立的进程,特别是hal层将底层硬件隔离开,进程通信会频繁的发生,为了更好的在进程间通信,Android开发了Binder模块专门用于解决该问题。前置知识介绍进程执行过程Linux下进程通信方式Binder概述AndroidBin......
  • [笔记]Git常用命令大全
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`[笔记]Git常用命令大全日期:2018-6-16阿珏折腾代码浏览:1796次评论:4条继上一次后,抽空整理了个比较全的Git常用命令,找到了一张非常棒的导图,......
  • 应用层总结笔记2
    1.HTTP是什么超文本传输协议用于主机之间传输文字、图片、视频等超文本数据的规范协议HTTP不限于服务器向客户端发送超文本,服务器之间也可能进行超文本的传输2.******HTTP的状态码除了不常见的1类提示信息还有2类的报文成功收到状态信息3类的重定向信息,表示客户端申请访问......
  • 传输层总结笔记3
    1.TCP头格式有源、目的端口号,指示进行通信的两个应用进程;首部长度;序列号,表示数据部分的第一个字节的编号;确认号,表示希望接收到的下一个字节的编号,表明该编号之前的数据都已经被确认接收了;控制位,ACK表示确认号有效性RST表示强制断开连接SYN、FIN方别表示报文属于TCP连接建立......
  • 侯捷C++上期笔记
    1.头文件和类、构造函数c++和c最大的不同在于C++会把数据以及处理数据的函数放到一个对象objects(class)里,不同类之间不可见,类似C中结构体struct防止头文件重复声明ifndefcomplex//当之前没有声明过这个头文件时,才进行后续的声明definecomplex(2)补充定义(1)类定义(3)类功能解释......
  • Godot Breakeys Godot Beginner Tutorial 游戏开发笔记
    目录前言资源下载添加人物节点运动状态机移动平台单向穿过奇怪的BugArea2DBodyEntered死亡区域全局类多线程安全TileMap处理TileMap分层前言这次来学习一下youtube的传奇Unity博主,Breakeys的Godot新手教程。Breakeys是从15岁左右就开始用unity做游戏并在youtube上面发布视频了。......
  • 中移ML307A(C-SDK,OpenCPU)学习开发-程序固件烧录说明
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 安装驱动1,解压 2,根据自己......