Problem - H - Codeforces

假模板题,b站看jls用一个叫lyndon分解的神仙算法秒杀了此题,于是去学了lyndon分解,结果自己写完发现随便造了个数据就hack掉了(顺便去b站评论hack了一波jls,被回复了,XD),出题人可能自己没想到有人用这么冷门的算法......

lyndon分解就是说每一个字符串,都能唯一地划分为一系列子串s1,s2,s3...sk,满足如下两条性质

1)si是lyndon串,lyndon串的定义为最小后缀为自身的串,如ab、aab是,aa,ba不是

2) 划分出的子串字典序单调不降(即非严格增大)。

如aa可划分为a|a, bcbca可划分为bc|bc|a

求这个分解,如果想偷懒,显然可以用广为人知的后缀数组,每次把还存在的最小后缀位置作为一个划分位置即可(事实上也可以以此说明lyndon分解的存在性,唯一性的话要用反证法来证)

不过也有专门的算法,且是递推地构造,在有些题目里有用。考虑维护已划分出的最后一个lyndon分解结尾i, 当前正在构造的lydon分解上一循环节位置j,当前正在构造的lyndon分解末尾位置k,然后根据j,k 字典序关系处理各种情况即可。

最顶上摆的那道题似乎能用lyndon分解做,利用字符串border能划分为log个等差数列的性质(详见jcvb的字符串选讲),不过是jls说的,个人没实现过,简单一点的做法就是二分哈希判字典序(找lcp下一个位置)。

lyndon分解学习笔记相关推荐

  1. 拉格朗日松弛与分解学习笔记2023.3.8

    第一种松弛,将约束右边值变大,可行空间变大,但是没什么意义. 第二种松弛,去除部分约束,改变问题结构 第三种松弛,叫做连续松弛或者线性松弛,保留约束条件,但是离散变量看成连续变量(去掉整数约束) 第四 ...

  2. CEEMDAN:完全噪声辅助聚合经验模态分解(matlab)——学习笔记3

    CEEMDAN:完全噪声辅助聚合经验模态分解--学习笔记3 从EMD到CEEMDAN 1.EMD EMD算法将基于原始信号的局部特征时间尺度,将原始信号分解为特征模态函数,即将其分解为从高频到低频的一 ...

  3. 二、信号分解—>局部均值分解(LMD)学习笔记

                                                LMD学习笔记 一.总述 局部均值分解算法(LMD), LMD算法最大的特点就在依据信号本身的特征对信号的自适应 ...

  4. ESL2.5 高维问题的局部方法学习笔记(含泛化误差分解MSE分解)

    2.5 高维问题的局部方法 这是一篇有关<统计学习基础>,原书名The Elements of Statistical Learning的学习笔记,该书学习难度较高,有很棒的学者将其翻译成 ...

  5. 特征值分解图像压缩学习笔记

    基于特征值分解图像压缩学习笔记(MATLAB) X=imread('lplp.jpg'); %将图像变成单通道 Y=rgb2gray(X); %生成一个窗口 figure(1); %显示Y图片 ims ...

  6. ESL3.2(下)最小二乘法学习笔记(含施密特正交化,QR分解)

    3.2(下) 最小二乘法 这是一篇有关<统计学习基础>,原书名The Elements of Statistical Learning的学习笔记,该书学习难度较高,有很棒的学者将其翻译成中 ...

  7. 几个冷门字符串算法的学习笔记(最小表示法,exKMP,Lyndon Word)

    所有下标均从1开始 最小表示法 给定一个串,求字典序最小的循环同构. 我们把串复制一遍接在后面,然后求出[1,N][1,N][1,N]开始的长为NNN的子串中最小的 先设i=1,j=2i=1,j=2i ...

  8. 【学习笔记】线性代数全家桶(在编程竞赛中的应用)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 0x00. 矩阵 0x01. 矩阵 0x02. 矩阵的加法与数量乘法 0x03. 矩阵乘法 0x ...

  9. 欠拟合和过拟合学习笔记

    欠拟合和过拟合学习笔记 https://www.cnblogs.com/DicksonJYL/p/9620464.html 在建模的过程中会经常出现1.模型的效果,但是泛化能力弱,2.模型的结果很差的 ...

最新文章

  1. Blender未来科幻武器全流程制作视频教程
  2. c# 取两个时间的间隔
  3. golang 运算与循环
  4. Linux内核网络数据包发送(一)
  5. js基础(数组)--数组类型、类数组对象、作为数组的字符串
  6. Android重写菜单增加系统自带返回键
  7. 《2021 年中国视频云场景应用洞察白皮书》联合首发!
  8. 下列关于计算机图形的应用中 错误的是,计算机图形学题库及答案
  9. CentOS7下Elasticsearch集群部署记录
  10. 查看redis aof内存_Redis持久化问题定位与优化技巧
  11. LeetCode-654. 最大二叉树
  12. 生成缩略图代码(转帖)
  13. Java网络编程学习笔记
  14. SHELL中如何对一个变量进行算术操作(加减)
  15. 计算机二级vb语言题库百度云,全国计算机二级考试VB语言考试试题
  16. [Android] 安卓迅雷带云盘内测版7.0 简洁 无广告 官方版
  17. Linux复制文件到某路径并重命名
  18. 人工智能(4)发展现状及未来趋势
  19. java 格式化 浮点数_如何在javascript中格式化浮点数?
  20. c语言程序设计猪八戒吃西瓜,最全艺术导论题目及答案

热门文章

  1. and门 simuilink_电力电子电路仿真——MATLAB和PSpice应用教学课件课件作者魏艳君第五章节幻灯片.ppt...
  2. 编程:输入圆柱体的底面半径r和高h,计算并输出圆柱体的体积
  3. 最近我了解了一下工业互联网
  4. 计算机网络重要概念整理
  5. 如何在Linux系统搭建一个简单的用户聊天室
  6. 【历史上的今天】8 月 31 日:人工智能起源;GPU 诞生;Windows 98 中文版来了
  7. 查看电脑重启日志_详解各个系统主机日志及数据库日志收集--AIX、redhat、HP-UX等...
  8. 跑腿网站TaskRabbit获C轮1300万美元融资
  9. vue项目开发实录--仿去哪儿网App-张鹏-专题视频课程
  10. android 带箭头的按钮,android自定义带箭头对话框