随笔分类 -  字符串——SA

摘要:XVIII.[八省联考2018]制胡窜 首先,本题parent tree上树上倍增+线段树合并找出每个点的 endpos 集合应该是没得说的。 于是我们现在考虑知道了 enspos 集合以及询问串长度 len 怎么求出答案。 首先,一个正常人稍微想 阅读全文
posted @ 2021-04-01 12:21 Troverld 阅读(60) 评论(0) 推荐(0) 编辑
摘要:XV.CF1073G Yet Another LCP Problem 这里记录一下我在思考本题时的一个感悟,即后缀数组与后缀自动机的等价性。 众所周知,SA时有一个常见思路就是针对 height 数组建一棵笛卡尔树。但是,该笛卡尔树,唯一等价于SA针对的串的反串的parent tree。具体可以分别 阅读全文
posted @ 2021-04-01 12:15 Troverld 阅读(76) 评论(0) 推荐(0) 编辑
摘要:XXXVI.LOJ#6198. 谢特 SA+笛卡尔树+01trie+启发式合并模板四合一,省选模板练习必备神器 考虑SA后建立笛卡尔树。问题转换为在笛卡尔树的一段区间中(此时该区间内任意两条后缀的LCP长度均为区间中 ht 最小值)任意两条后缀的 xor 最大值。是经典 阅读全文
posted @ 2021-04-01 11:25 Troverld 阅读(65) 评论(0) 推荐(0) 编辑
摘要:XXXV.树上后缀排序 My Solution 阅读全文
posted @ 2021-04-01 11:23 Troverld 阅读(36) 评论(0) 推荐(0) 编辑
摘要:XXXIII.CF547E Mike and Friends 实际上是一道很蠢的问题。 我们直接在后缀数组上二分,求出所有拥有串sk作为前缀的后缀所在的区间,则问题就被转换为某一区间中值在[l,r]范围内的数的个数。显然是二维数点问题,于是直接离线后树状数组解决。 代码: #include 阅读全文
posted @ 2021-04-01 11:22 Troverld 阅读(59) 评论(0) 推荐(0) 编辑
摘要:XXXII.CF1063F String Journey 题解 阅读全文
posted @ 2021-04-01 11:20 Troverld 阅读(22) 评论(0) 推荐(0) 编辑
摘要:XXXI.CF666E Forensic Examination 题解 阅读全文
posted @ 2021-04-01 11:18 Troverld 阅读(35) 评论(0) 推荐(0) 编辑
摘要:XXX.[CTSC2012]熟悉的文章 题解 阅读全文
posted @ 2021-04-01 11:16 Troverld 阅读(37) 评论(0) 推荐(0) 编辑
摘要:XXIX.CF700E Cool Slogans 题解 阅读全文
posted @ 2021-04-01 11:13 Troverld 阅读(29) 评论(0) 推荐(0) 编辑
摘要:XXVIII.[BZOJ3277]串/CF204E Little Elephant and Strings 这两题是重题,代码改都不改交上去就能A,故放在一起讲。 网上的大多数SA题解都是O(nlog2n)O(nlogn)的复杂度,太令人不爽了。因此,这里有一种复杂度O(n)阅读全文
posted @ 2021-04-01 11:10 Troverld 阅读(74) 评论(0) 推荐(0) 编辑
摘要:XXVII.[BZOJ4310]跳蚤 我们仍然考虑二分子串。设当前二分的子串从位置pos开始,长度为len。考虑如何编写check函数。 一个naive的想法便是从前往后枚举所有极大的不存在小于二分串的子串的段,然后将该段数与规定段数作比较。 但是这有点问题——我们发现,这样做每次都是为段中 阅读全文
posted @ 2021-04-01 11:08 Troverld 阅读(58) 评论(0) 推荐(0) 编辑
摘要:XXVI.SP7258 SUBLEX - Lexicographical Substring Search 在上一题中,我们二分了后缀;但这里,我们要二分的是子串。 我们设一个sumx表示有多少本质不同子串的字典序小于等于sai。显然,它是单调增的。则我们可以二分找出sumx小于询 阅读全文
posted @ 2021-04-01 11:06 Troverld 阅读(54) 评论(0) 推荐(0) 编辑
摘要:XXV.[JSOI2015]串分割 题解 阅读全文
posted @ 2021-04-01 11:05 Troverld 阅读(29) 评论(0) 推荐(0) 编辑
摘要:XXIV.CF123D String 没啥好说的,直接建出笛卡尔树出来,然后统计一下和即可。复杂度O(n),假如你用DC3的话。 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N= 阅读全文
posted @ 2021-04-01 11:03 Troverld 阅读(57) 评论(0) 推荐(0) 编辑
摘要:XXIII.[NOI2018]你的名字 题解 阅读全文
posted @ 2021-04-01 11:01 Troverld 阅读(41) 评论(0) 推荐(0) 编辑
摘要:XXII.[湖南集训]图森 题解 阅读全文
posted @ 2021-04-01 10:57 Troverld 阅读(44) 评论(0) 推荐(0) 编辑
摘要:XXI.[NOI2016]优秀的拆分 这后缀数组越来越像一个用来求\operatorname的工具人了…… 对于一个\text\(的拆分,我们可以在中间切一刀,变成\)\text\(与\)\text两半。这时,我们只需要设ai表示以i为结尾的\text串数量,bi表示以$ 阅读全文
posted @ 2021-04-01 10:55 Troverld 阅读(85) 评论(0) 推荐(0) 编辑
摘要:XX.【模板】后缀自动机 (SAM) 俗话说的好,模板题怎么能用模板水过去呢 我们考虑用建出ht数组,然后用单调栈求出每个ht最多能向左向右延伸多远(VI.[AHOI2013]差异),然后直接一边扫过求max即可。 复杂度O(n),假如你用DC3的话。但是用倍增实际跑起来也真的超快 阅读全文
posted @ 2021-04-01 10:53 Troverld 阅读(62) 评论(0) 推荐(0) 编辑
摘要:XIX.工艺 /【模板】最小表示法 没啥好说的,直接倍长数组,然后后缀排序即可,道理都在IX.[JSOI2007]字符加密那儿讲过了。 代码: #include<bits/stdc++.h> using namespace std; const int N=600100; int n,m; int 阅读全文
posted @ 2021-04-01 10:52 Troverld 阅读(45) 评论(0) 推荐(0) 编辑
摘要:XVIII.[HEOI2016/TJOI2016]字符串 作为一个理智正常的OIer,二维数点的题说什么都应该离线线段树通过而不是大力搞主席树呀((( 我们发现这题询问中s[c,,d]中这个“d”是不重要的,只需要把最终结果同(dc+1)\(\)min即可,因此忽略不 阅读全文
posted @ 2021-04-01 10:50 Troverld 阅读(78) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示