首页 > 其他分享 >最小表示法学习笔记

最小表示法学习笔记

时间:2023-11-02 09:11:06浏览次数:37  
标签:位置 最小 笔记 表示法 字符串 字典 指针

找出与 \(S\) 循环同构的字符串中字典序最小的那一个。

记录两个指针 \(i\) 和 \(j\),表示当前可能成为答案的最前面两个位置。初值为字符串的前两个位置 \(1\) 和 \(2\)。每次按 \(k\) 从小到大暴力比较 \(S_{i+k}\) 和 \(S_{j+k}\) 的大小,当遇到 \(S_{i+k}>S_{j+k}\) 时,\(i\sim i+k\) 可以直接跳过。因为以位置 \(i+p(p\leq k)\) 开头的字符串一定比以位置 \(j+p\) 开头的字符串字典序大。\(S_{j+k}>S_{i+k}\) 同理。

根据定义,如果前面那个指针不优了,那至少会跳到后面那个指针后面一个位置。这样也就不会出现两个指针相等的情况。

但当 \(k>n\) 时,这两个位置是否就是字典序最小的呢?答案是肯定的,假设 \(i<j\),因为 \(1\sim i-1\) 和 \(i+1\sim j-1\) 都不优,而循环节长度至多也只有 \(j-i\)。

标签:位置,最小,笔记,表示法,字符串,字典,指针
From: https://www.cnblogs.com/landsol/p/17804653.html

相关文章

  • 学习笔记:卢卡斯定理
    卢卡斯定理引入卢卡斯定理用于求解大组合数取模的问题,其中模数必须为素数。正常的组合数运算可以通过递推公式求解,但当问题规模很大,而模数是一个不大的质数的时候,就不能简单地通过递推求解来得到答案,需要用到卢卡斯定理。定义卢卡斯定理内容如下:对于质数\(p\),有\[\binom{n}{......
  • 学习笔记:裴蜀定理
    裴蜀定理定义裴蜀定理,又称贝祖定理(Bézout'slemma)。是一个关于最大公约数的定理。其内容是:设\(a,b\)是不全为零的整数,则存在整数\(x,y\),使得\(ax+by=\gcd(a,b)\).证明若任何一个等于\(0\),则\(\gcd(a,b)=a\).这时定理显然成立。若\(a,b\)不等于\(0\).由......
  • 学习笔记:威尔逊定理
    威尔逊定理定义威尔逊定理:对于素数\(p\)有\((p-1)!\equiv-1\pmodp\)。证明我们知道在模奇素数\(p\)意义下,\(1,2,\dots,p-1\)都存在逆元且唯一,那么只需要将一个数与其逆元配对发现其乘积均为(同余意义下)\(1\),但前提是这个数的逆元不等于自身。那么很显然\((p-1)!\bmod......
  • uboot的重定向汇编详细分析--Apple的学习笔记
    一,前言既然是第二轮学习,当然要比第一轮增加深度,获取更多技能和通用方法论。之前我想通过代码关闭relocate功能,结果一尝试就复位了,看来没我想的简单,还是先了解下relocate的代码。二,源码分析调用前r0有传参为gd->relocaddr,也就是一个指针地址保存在r0。arch/arm/lib/crt0.S ldr r0,......
  • Shapley Value 学习笔记
    Shapleyvalue用于计算个体对整体的贡献度,它的计算公式如下:\[\varphi_i(v)=\sum_{S\subseteqN\backslash\{i\}}\frac{|S|!(N-|S|-1)!}{n!}(v(S\cup\{i\})-v(S))\]其中,\(v\)表示是价值函数,返回一个组合的价值。\(S\)表示一种可能的组合(不包含\(i\),所以它可能是空集......
  • Java笔记—Java修饰符
    Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符1、访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。default (即默认,什么也不写):在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方......
  • Java笔记—Java修饰符
    Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符1、访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。default (即默认,什么也不写):在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方......
  • 【算法笔记】动态规划Dynamic Programming
    参考视频:5SimpleStepsforSolvingDynamicProgrammingProblems引子:最长递增子串(LongestIncreasingSubsequence,LIS)LIS([31825])=len([125])=3LIS([52863695])=len([2369])=4解决问题的三个步骤:可视化例子(visualizeexample)(“visualizee......
  • 《信息安全系统设计与实现》第九周学习笔记
    一、第五章定时器及时钟服务1、并行计算是一种计算方案,它尝试使用多个执行并行算法的处理器更快速的解决问题顺序算法与并行算法并行性与并发性并行算法只识别可并行执行的任务。CPU系统中,并发性是通过多任务处理来实现的2、线程线程的原理:某进程同一地址空间上的独立......
  • 【python爬虫】80页md笔记,0基础到scrapy项目高手,第(3)篇,requests网络请求模块详解
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。完整版笔记直接地址:请移步这里共8章,37子模块,总计56668字requests模块本阶段本文主要学习requests这......