当前位置: 首页 > news >正文

网站开发员一月多少工资游戏代理赚钱

网站开发员一月多少工资,游戏代理赚钱,宁波建设系统网站,wordpress溢价主题摘抄自quack的ppt。 这部分和 s a sa sa的关联比较大,可以加深对 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后缀中是最小的,则称 s s s是一个 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

摘抄自quack的ppt。

这部分和 s a sa sa的关联比较大,可以加深对 s a sa sa的理解。

Part 1

如果字符串 s s s的字典序在 s s s以及 s s s的所有后缀中是最小的,则称 s s s是一个 lyndon \text{lyndon} lyndon串。

lyndon \text{lyndon} lyndon分解,指的是把一个字符串分成若干段,每一段都是一个 lyndon \text{lyndon} lyndon串,问最少的分割段数。

方法一:用后缀数组 s a [ 1 ] sa[1] sa[1]就是 lyndon \text{lyndon} lyndon分解的最后那一段, lyndon \text{lyndon} lyndon分解倒数第二段就是把 s a [ 1 ] sa[1] sa[1]那一段排除之后排的最靠前的 s a sa sa,以此类推。

s a sa sa可以用来 lyndon \text{lyndon} lyndon分解依赖于以下结论:

定义数组 a [ i ] a[i] a[i]为最小的 j j j,使得 j > i j>i j>i S [ j : ∣ S ∣ − 1 ] < S [ i : ∣ S ∣ − 1 ] S[j:|S|-1]<S[i:|S|-1] S[j:S1]<S[i:S1],如果不存在这样的 j j j,可以认为 a i = ∣ S ∣ a_i=|S| ai=S

那么, S S S lyndon \text{lyndon} lyndon分解的第一项为 S [ 0 : a [ 0 ] − 1 ] S[0:a[0]-1] S[0:a[0]1],且后面 m − 1 m-1 m1项就是 S [ a [ 0 ] : ∣ S ∣ − 1 ] S[a[0]:|S|-1] S[a[0]:S1] lyndon \text{lyndon} lyndon分解。

证明:显然此时不能划分到 a [ 0 ] a[0] a[0]之后,否则可以根据原串后缀的信息道出矛盾。因此只需论证划分到 a [ 0 ] a[0] a[0]合法即可。注意到此时 S [ a [ 0 ] ] ≤ S [ 0 ] S[a[0]]\le S[0] S[a[0]]S[0],因此对于任意 j ∈ [ 1 , a [ 0 ] − 1 ] j\in [1,a[0]-1] j[1,a[0]1],一定满足 S [ 0 : a [ 0 ] − j − 1 ] ≠ S [ j : a [ 0 ] − 1 ] S[0:a[0]-j-1]\ne S[j:a[0]-1] S[0:a[0]j1]=S[j:a[0]1],又因为 s a [ 0 ] < s a [ j ] sa[0]<sa[j] sa[0]<sa[j],因此 S [ 0 : a [ 0 ] − 1 ] S[0:a[0]-1] S[0:a[0]1]一定是它的所有后缀当中最小的。

基本性质:

1.1 1.1 1.1 若字符串 u , v u,v u,v lyndon \text{lyndon} lyndon串且 u < v u<v u<v,则 u v uv uv lyndon \text{lyndon} lyndon串。

1.2 1.2 1.2 若字符串 s s s lyndon \text{lyndon} lyndon串, s ′ a s'a sa s s s的前缀,那么 s ′ b ( b > a ) s'b(b>a) sb(b>a) lyndon \text{lyndon} lyndon串。(注意 s ′ a s'a sa不一定是 lyndon \text{lyndon} lyndon串)

方法二:duval 算法

每次维护一个前缀的 lyndon \text{lyndon} lyndon分解。这个前缀 S [ 1 : k − 1 ] S[1:k-1] S[1:k1]可以被分解成 s 1 , . . . , s g s_1,...,s_g s1,...,sg这些 lyndon \text{lyndon} lyndon串和 S [ i : k − 1 ] S[i:k-1] S[i:k1]这个近似 lyndon \text{lyndon} lyndon串(形如 w k w ′ w^kw' wkw w w w是一个 lyndon \text{lyndon} lyndon串, w ′ w' w w w w的前缀)。

具体的,三个变量 i , j , k i,j,k i,j,k维持一个循环不变式:

  • S [ 0 : i − 1 ] = s 1 s 2 . . . s g S[0:i-1]=s_1s_2...s_g S[0:i1]=s1s2...sg 是已经固定下来的分解,满足 s l s_l sl lyndon \text{lyndon} lyndon串,且 s l ≥ s l + 1 s_l\ge s_{l+1} slsl+1(否则可以合并)。
  • S [ i : k − 1 ] = t 1 t 2 . . . t h v S[i:k-1]=t_1t_2...t_hv S[i:k1]=t1t2...thv是没有固定的分解,满足 t 1 t_1 t1 lyndon \text{lyndon} lyndon串, t 1 = t 2 = . . . = t h t_1=t_2=...=t_h t1=t2=...=th v v v t h t_h th的(可为空的)真前缀,令 j = k − ∣ t 1 ∣ j=k-|t_1| j=kt1

在这里插入图片描述

复杂度为 O ( n ) O(n) O(n)比sa快啊

代码

Part 2

lyndon \text{lyndon} lyndon分解的应用:

1.3 1.3 1.3 给定长为 n n n的字符串 S S S,求出 S S S的最小表示法。

方法:将 S S SS SS lyndon \text{lyndon} lyndon分解,找到分解后最后一个字符串,它的首字符为 S S [ p ] SS[p] SS[p],且 p ∈ [ 0 , ∣ S ∣ ) p\in [0,|S|) p[0,S)。可以证明 S S [ p : p + ∣ S ∣ − 1 ] SS[p:p+|S|-1] SS[p:p+S1]是字典序最小的。(运用第一条引理,转化为比较在原串中的后缀,即sa)

1.4 1.4 1.4 给定长度为 n n n的字符串 S S S,将 S S S分为最多 k k k个串 c 1 c 2 . . . c k c_1c_2...c_k c1c2...ck,求 max ⁡ c i \max c_i maxci的最小值。

方法:看到字典序,容易想到 lyndon \text{lyndon} lyndon分解。首先把 S S S lyndon \text{lyndon} lyndon分解成 s 1 , . . . , s g s_1,...,s_g s1,...,sg,如果 k ≥ g k\ge g kg,那么答案即为 s 1 s_1 s1;否则,如果 s 1 > s 2 s_1>s_2 s1>s2,那么显然可以分成 s 1 s_1 s1和剩下的所有串,答案还是 s 1 s_1 s1。因此,考虑分解成 s 1 m s g s_1^ms_g s1msg的情况,如果 k > m k>m k>m,那么答案还是 s 1 s_1 s1,如果 k ≤ m k\le m km,那么尽量均分一下即可。

推广:多次询问,每次询问 S S S的一段后缀的答案。

考虑求出原串的sa数组,显然可以求出第一项以及重复次数(可以用哈希),这样就做完了。

1.5 1.5 1.5 S S S的每个前缀的字典序最小的后缀

首先把 S S S lyndon \text{lyndon} lyndon分解成 s 1 , . . . , s g s_1,...,s_g s1,...,sg,显然 s 1 . . . s k s_1...s_k s1...sk的字典序最小的后缀是 s k s_k sk。但是前缀取到分解出来的 lyndon \text{lyndon} lyndon串半截时,答案可能不一样。

考虑 duval \text{duval} duval算法求 lyndon \text{lyndon} lyndon分解的过程,分类讨论:

  • s [ k ] > s [ j ] s[k]>s[j] s[k]>s[j],此时 a n s [ k ] ans[k] ans[k]应该等于 i i i,因为 s [ i : k ] s[i:k] s[i:k]构成一个新的 lyndon \text{lyndon} lyndon
  • s [ k ] = s [ j ] s[k]=s[j] s[k]=s[j],此时 a n s [ k ] = a n s [ j ] + k − j ans[k]=ans[j]+k-j ans[k]=ans[j]+kj
  • s [ k ] < s [ j ] s[k]<s[j] s[k]<s[j],在 lyndon \text{lyndon} lyndon串开头时更新

1.6 1.6 1.6 S S S的每个前缀的字典序最大的后缀

首先把字符比较反过来,然后要尽量向左取,当 s [ k ] ≤ s [ j ] s[k]\le s[j] s[k]s[j]的时候, s [ i : k ] s[i:k] s[i:k]这一段都保持了是一个近似 lyndon \text{lyndon} lyndon串,所以都取近似 lyndon \text{lyndon} lyndon串的左端点 i i i作为答案即可。

ps:感觉这个算法就只能考论文题。。。太恶心了。。。

http://www.yayakq.cn/news/955825/

相关文章:

  • 常用的网站推广方法有哪些高端旅游的网站建设
  • 网站被采集 更换模板网站集约化建设的优点
  • 仿牌网站建设平面设计网课哪个机构好
  • 苏州建网站公司选苏州聚尚网络wordpress页码颜色不变
  • 网站建设开题报告设计跨境电商开店平台
  • 网站如何做关键词seo上海有哪些软件公司
  • 搭建网站价格雪梨直播
  • 自己做的网站可以开直播word在线编辑
  • 网站开发php技术php网站建设实例视频教程
  • 那个平台能免费做网站网站前台可以打开
  • 网站建设管理人员推荐表山西公司怎么做网站
  • 鞍山自适应网站制作青岛设计网站的公司
  • 曲阜做网站wordpress模板怎么修改字体
  • 新浦网站制作上海市人才服务中心网首页
  • 文章类网站程序相亲网站认识的可以做朋友
  • 佛山市国外网站建设公司nginx与WordPress
  • 网站备案期间打不开移动端减肥网站模板
  • 海南住房建设厅定额网站贵阳高端网站建设
  • 一般建设一个网站多少钱怎么开发出一个软件
  • 八零婚纱摄影工作室网站关于网站建设与维护的心得体会
  • 一些好用的网站手机网站的后台管理
  • 化妆品网站设计系统需求的策划书网站型销售怎么做
  • 如何做介绍监控公司的网站做图表好看的网站
  • 京东的网站规划与建设市场分析百度人工电话多少号
  • 网站模板免费下载云资源python基础教程答案
  • 做公司网站源代码怎么写上海新闻
  • 做化妆品网站主机屋网站搭建设置
  • 网站建设 今网科技迷糊娃 wordpress 主题
  • 网站开发交流群汽车行业市场分析那个网站做的好
  • 有做网站设计的吗网站建设市场价