- 2024-07-31SAM拾遗碎记
SAM拾遗碎记SAM是一个非常复杂的算法,相关到很多本质性的问题需要思考,但受限于个人能力,想要完整而系统的写一篇学习笔记,对我来说绝非易事。虽然如此,又不能完全不写点什么,我上次好不容易学完了sam,这次又再一次花了很长的时间,并且还是在之前有所记录的情况下。正是因为sam是如此难的
- 2024-07-25点击内置变量,在文本框中插入,按下退回键或者删除键删除变量
效果:代码: //点击变量添加 consthandleTagClick=(param:any)=>{ constinput:any=inputRef.current.input; if(input){ conststartPos=input.selectionStart; constendPos=input.selectionEnd; con
- 2024-07-17字符串不会一点
每次讲字符串杂题都发现自己忘光了。本文章用于我个人字符串专题重生。二分+哈希咕AC自动机咕SAM说文解字:SAM=SuffixAutoMation(后缀自动机)即一个可以表示字符串所有后缀的自动机。具体的,一个SAM是一个有一个确定的源点和不同终止节点的有向无环图。同时,SAM是一
- 2024-07-02字符串
之前就是史,重新来写,字符串还是有必要学的。KMP用于文本串匹配。其和暴力的区别在于失配后会从一个特定位置重新开始匹配而不是从头开始,从而节约时间。这个失配数组也就是\(nex_i\)表示\(S[\mathbf{1}\dotsi]\)的最长\(\mathtt{border}\)长度,建出来之后相当于一个自动机
- 2024-06-22后缀自动机 SAM
1概述及定义后缀自动机(SAM)是一个强有力的数据结构,可以解决很多经典字符串问题,例如:线性复杂度进行字符串匹配。线性复杂度求出一个字符串的所有不同子串个数。那么我们定义一个字符串\(S\)的SAM是一个可以接受\(S\)所有后缀的最小DFA(确定性有限状态自动机)。也就是说
- 2024-06-03QOJ 7008 另解
文中符号:\(\operatorname{Period}(s)\):字符串\(s\)的周期集合。\(\operatorname{Per}(s)\):字符串\(s\)的最小周期。循环节:\(x\in\operatorname{Period}(s)\)且\(x|\operatorname{len}(S)\)。\(\operatorname{Cyc}(s)\):\(s\)的最小循环节。\(\operatorname{endpos}(
- 2024-04-19【学习笔记】 字符串基础 : 后缀自动机(基础篇)
本文只介绍关于\(\mathbf{SAM}\)的基本概念与实现后缀自动机是什么类似\(\text{AC}\)自动机,后缀自动机(\(\text{SAM}\))是能且只能接收字符串所有后缀的自动机我们首先要知道,\(\mathbf{SAM}\)是只能接收所有后缀的结构而不是只能维护后缀的结构事实上\(\mathbf{SAM}\)
- 2024-04-05CF1037H Security
\(CF1037H\\Security\)题意给定一个母串\(s\)和\(T\)次询问,每次询问\(S[l\dotsr]\)中字典序严格大于\(t\)的最小串,没有则输出\(-1\)\[|s|\leq10^5\,\\sum|t|\leq2\times10^5\]思路分析不会,贺了首先,因为这个题的标签里有SAM,所以我们要用SAM壹首先我们
- 2024-03-19关于 SAM 的一些证明
当(教练)让我推SAM的时候,我的心情是这样的:我感觉会写不就行了。不管了,写几个证明吧。在此之前,可以先看一下this。首先SAM是一个只接受所有后缀的DFA。状态\(u\)对应的字符串长度是一个区间。在状态\(u\)的串的出现次数为\(\mid\texttt{endpos(u)}\mid\)。这些串
- 2024-03-01SAM 略解
前言只要你愿意啃,没有算法是学不来的——教练说实话,学完SA后有时间都会去看SAM,但就是怀着信息去,带着一脑子问号回来根据教练の哲理,一定要把SAM啃下来引入后缀自动机能解决很多问题。举个例子在一个字符串中搜索另一个字符串所有出现位置得到有多少本质不同的字
- 2024-02-18后缀自动机学习笔记
用途略。根本思想略。概念阐释endpos:这是一个集合。\(endpos(x)\)代表子串\(x\)在\(s\)中所有结束位置的集合。等价类:这也是一个集合。一个等价类中包含所有\(endpos(i)\)完全相等的子串\(i\)。有如下引理(其实很显然,看了理解了就可以了):同一等价类中,子串
- 2024-02-15【博客】后缀自动机
后缀自动机在阅读了众多大佬的博客之后终于对后缀自动机有了初步理解简单整理一下学习成果大佬文献如下史上最通俗的后缀自动机详解(写的真的好)后缀自动机(SAM)-OIWiki(OI-wikiyyds)后缀自动机后缀自动机SAM-CSDN博客引入我们可以建立一个字典树将原串的所有子串
- 2024-02-14后缀自动机
后缀自动机很毒瘤的字符串数据结构,但是我觉得多在脑子里梳理几遍后,比后缀数组好用多了(这里跳过几乎所有证明,除了对后面理解有影响的,因为我认为这些不重要也学不会主要记录对做题有帮助的核心性质字符串的SAM可以理解为这个字符串的所有子串的压缩形式定义SAM是一个接受
- 2024-01-17【学习笔记】后缀自动机 SAM
一.后缀自动机的定义SAM(SuffixAutomaton)是一种有限状态自动机,仅可以接受一个字符串的所有后缀。如果您不懂自动机,那么换句话说:SAM是一个有向无环图。称每个结点为状态,边为状态间的转移,每个转移标有一个字母,同一节点引出的转移不同。SAM存在一个源点\(S\),称为初始状态
- 2023-12-30后缀自动机(SAM)
对OIWIKI进行了抄写删减精炼定义字符串\(s\)的SAM是一个接受\(s\)的所有后缀的最小DFA(确定性有限自动机或确定性有限状态自动机)。SAM是一张有向无环图。节点称作状态,边称作转移图存在一个源点\(t_0\),称作初始状态(即下图红点),其他节点均可从\(t_0\)出发到达转移
- 2023-12-03基础后缀数据结构简记
\[\newcommand{\lcp}{\operatorname{lcp}}\newcommand{\endpos}{\operatorname{endpos}}\newcommand{\link}{\operatorname{link}}\newcommand{\maxl}{\operatorname{maxl}}\newcommand{\minl}{\operatorname{minl}}\]约定\(n\)是字符串长度.\(\lcp(s,t)\
- 2023-10-11八点五省联考 2018
一双木棋状态数不多,直接爆搜https://loj.ac/s/1676274IIIDX考虑依次给\(i=1,2,\cdots,n\)填上数,每次尽量填最大的。考虑什么时候\(i\)填上\(x\)是合法的。考虑Hall定理,发现左部点约束最严的时候肯定是找一个已经填过的点\(u\),然后对所有\(d_v\ged_u\)的\(v\),选出
- 2023-09-07后缀自动机
\(Sam\)复杂度和空间都成线性,但不能只开\(n\)\(endpos\)1,定义\(endpos\)为每个子串出现的开头集合2,定义\(Sam\)每个节点为“状态”,则每个状态对应着一个或者多个\(endpos\)相同的集合后缀链接\(link\)1,连向当前子串后缀中非同一\(endpos\)的最大那个code:洛谷P3804
- 2023-09-06后缀自动机 (SAM) 的构造及应用
cnblogs怎么又炸了。只能先写在这里了。为什么又可爱又强的xxn去年9月就会的科技樱雪喵现在还不会呢/kel。感觉SAM的教程已经被前人写烂了啊。那就写点个人学习过程中对SAM的理解。参考资料:KesdiaelKen-史上最通俗的后缀自动机详解、OIwiki-后缀自动机(SAM)。概述
- 2023-09-03『算法小记』SAM
引入 daduoli最近对自己的名字很感兴趣,于是他开始研究自己的名字。知周所众,搞清楚一个字符串的最好方法就是把他的所有子串列出来(误),所以daduoli开始尝试列举他名字中所有的子串。 列了好一会,daduoli发现子串太多了,于是尝试把它们拼在一起。拼了好一会儿,他拼出来一个奇怪的
- 2023-07-13后缀自动机
自动机入门——后缀自动机数据结构简介后缀自动机是一个可以解决许多字符串相关问题的有力的数据结构,字符串的SAM可以理解为给定字符串的所有子串的压缩形式,SAM的空间复杂度和构造的时间复杂度均为线性的,准确的说,一个SAM最多有\(2n-1\)个节点和\(3n-4\)条转移边。定义
- 2023-05-18ASC8题解
B:考虑用\(D(n,r)\)表示在\(r\)维空间中有\(n\)个超平面最多形成多少个区域,感觉不是很好做,考虑一下怎么递推。根据在二三维的经验,我们可以得到以下递推式:\(D(n,r)=D(n-1,r)+D(n-1,r-1)\),实际意义就是原来已经有了\(n-1\)个然后再加入一个之后,会与前面的\(n-1\)个超平面在\(r\)维
- 2023-05-05threejs相机动画
threejs相机动画import*asdatfrom"dat.gui";import{GUI}from"../../utils/lil-gui.module.min.js";importTWEENfrom"@tweenjs/tween.js";constgui=newGUI();gui.domElement.style.right="0px";
- 2023-04-27Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)
一、前言本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒体文件就会自动播放,是其他
- 2023-03-23SAM
有点忘了。省选前来复习下。一个节点有几个信息:父亲。表示\(endpos\)集合最小的,且是当前节点\(endpos\)集合超集的节点。转移状态(儿子),表示加入某个字符能转移到的位置