Cage 字符串听课笔记
困困困!
KMP
注意到 KMP 的复杂度是均摊的,那么是否可以绕开?
注意到 KMP 实际上一个串的 ACAM,那么考虑可以类似的,在加入一个字符的同时维护 ACAM(考虑 ACAM 的构建过程,前面的点不会被影响)那么每次就可以通过 \(O(|\Sigma|)\) 的修改(或者利用可持久化数据结构达到 \(O(\log |\Sigma|)\))
但是似乎还有不依赖字符集以及数据结构的做法。先导入一些定义,定理。
- border: 若 \(k\) 满足 \(S_{1 \ldots k} = S_{n - k + 1 \ldots n}\) 那么 \(S_{1 \ldots k}\) 是 \(S\) 的 border。
- period: 若 \(\forall k \in [1, n - k] s.t. S_i = S_{i + k}\),那么 \(k\) 是一个周期。
如果存在长度为 \(k\) 的 border,那么存在长度为 \(n - k\) 的 period
Weak Period Theory
若 \(p, q\) 均为周期,那么 \(\gcd(p, q)\) 也为周期!
border 的 \(O(\log n)\) 等差数列
话是说如果将一个串的所有 border/period 排序,那么可以划分为 \(O(\log n)\) 个等差数列。
如何证明,考虑最长的 border,以及其对应的最小的周期。如果这个 border 长度 \(\ge \frac n2\),那么不断的减去这个周期就可以构造出新的 border。由于这个周期是最小的,所以中间不会有更多的 border 存在。
但是当这个串减到 \(\le \frac n2\) 那么此时可能存在新的 border 并不是由最大的那个减过来的。但是此时可以进入子问题,问题减半。
于是 border 可以划分为 \(O(\log n)\) 个等差数列。
Cage 字符串听课笔记的更多相关文章
- bayaim_java_入门到精通_听课笔记bayaim_20181120
------------------java_入门到精通_听课笔记bayaim_20181120--------------------------------- Java的三种技术架构: JAVAE ...
- cs231n spring 2017 lecture9 CNN Architectures 听课笔记
参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...
- Python 3.x 格式化输出字符串 % & format 笔记
Python 3.x 格式化输出字符串 % & format 笔记 python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字 ...
- iOS 字符串处理笔记
iOS字符串处理笔记,包括如何使用正则表达式解析,NSScanner扫描,设置和使用CoreParse解析器来解析处理自定义符号等内容 搜索 在一个字符串中搜索子字符串 最灵活的方法 - (NSRan ...
- 孔浩老师的 Struts2 教程听课笔记(思维导图)
最近有空重头学习了一遍孔浩老师的 Struts2 教程,重新写了一份听课笔记.后面常用 form 标签.服务器端验证.异常处理因为时间问题,没有来得及整理.后续我会抽空补上.最近忙着准备笔试.面试. ...
- [编程基础] Python字符串替换笔记
Python字符串替换笔记 Python字符串替换笔记主要展示了如何在Python中替换字符串.Python中有以下几种替换字符串的方法,本文主要介绍前三种. replace方法(常用) transl ...
- SAP BW/4HANA 听课笔记
BW/4HANA听课笔记 1.本地SQL,BW/4HANA对象和HANA VIEW互相访问: 2.高级分析功能数据分析预测: 3.InfoOjbect:Characteristics(维度),Key ...
- Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)
自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...
- C语言 字符串操作 笔记
/* C语言字符串的操作笔记 使用代码和注释结合方式记录 */ # include <stdio.h> # include <string.h> int main(void) ...
- crawler 听课笔记 碎碎念 1 初步了解各种选择器极其简单的使用
css中 身份证 id对应# 衣服 class对应 . 图片 pyquery...as pq html= request.get(url=''.....'') doc=pq(html) d ...
随机推荐
- 通过 MSE 实现基于Apache APISIX的全链路灰度
简介: 无论是微服务网关还是微服务本身都需要识别流量,根据治理规则做出动态决策.当服务版本发生变化时,这个调用链路的转发也会实时改变.相比于利用机器搭建的灰度环境,这种方案不仅可以节省大量的机器成本和 ...
- EventBridge 事件总线及 EDA 架构解析
简介:EventBridge 是事件驱动的具体落地产品,也是 EDA 的最佳实践方式. 作者:肯梦 作为 Gartner 定义的 10 大战略技术趋势之一,事件驱动架构(EDA)逐渐成为主流技术架构 ...
- 什么是好的错误消息? 讨论一下Java系统中的错误码设计
简介:一个好的Error Message主要包含三个部分:Context: 什么导致了错误?发生错误的时候代码想做什么?The error itself: 到底是什么导致了失败?具体的原因和当时的数据 ...
- 慢SQL治理分享
简介: 这里的慢SQL指的是MySQL慢查询,是运行时间超过long_query_time值的SQL.真实的慢SQL通常会伴随着大量的行扫描.临时文件排序或者频繁的磁盘flush,直接影响就是磁盘IO ...
- Flink 在 58 同城的应用与实践
简介: 58 同城的实时 SQL 建设以及如何从 Storm 迁移至 Flink. 本文整理自 58 同城实时计算平台负责人冯海涛在 Flink Forward Asia 2020 分享的议题< ...
- Oracle "脑残" CBO 优化案例
今天晚上下班回来才有空看群,群友发了一条很简单的慢SQL问怎么优化. 非常简单,我自己模拟的数据. 表结构: -- auto-generated definition CREATE TABLE HHH ...
- 扎克伯格说,Llama3-8B还是太大了,量化、剪枝、蒸馏准备上!
扎克伯格说,Llama3-8B还是太大了,不适合放到手机中,有什么办法? 量化.剪枝.蒸馏,如果你经常关注大语言模型,一定会看到这几个词,单看这几个字,我们很难理解它们都干了些什么,但是这几个词对于现 ...
- Hive中的FileFormat、RowFormat和SerDe总结
Hive如何读写数据? 我们知道,hive表的数据是存储在hdfs文件系统中的.那么Hive是如何将hdfs上的数据文件,映射成一张张表呢,今天就来理清楚这个问题. 官方文档中对于Hive读数据的流程 ...
- 线程中使用for循环的add或remove方法的两种方案
简介 (Introduction): 背景 在使用线程中添加list的元素时,使用add或remove就会产生异常. 分析 该list每当删除/添加一个元素时,集合的size方法的值都会减小1,这将直 ...
- 【活动访谈】发力数字基座 推动物联创新—航天科技控股集团AIRIOT4.0平台发布会活动专访
近日,由航天科技控股集团股份有限公司主办的"数字基座 智慧物联-AIRIOT4.0平台发布会"在北京圆满落幕.航天三院科技委总工程师王连宝应邀出席本次会议并接受媒体采访,共同参与访 ...