随笔分类 - 数据结构——笛卡尔树
摘要:II.I.CF1290E Cartesian Tree 并非一道很板的题,但是是可以被想出的。 考虑把笛卡尔树求出其中序遍历,则每个节点的子树是上面一段区间 。 考虑往中序遍历序列中某个位置 之后插入一个数 。显然,依照定义,这个数必定大于原序列中所有
阅读全文
摘要:I.[HNOI2012]三角形覆盖问题 扫描线问题是计算几何里面的一大重点……吗? 不管怎么说,这道题的确要使用扫描线解决。 具体来说,因为只有,考虑使用的做法并加以剪枝。 我们首先将所有三角形按照顶点的坐标递增顺序。接着,考虑用扫描线维护每一时刻与扫描线相
阅读全文
摘要:XV.CF1073G Yet Another LCP Problem 这里记录一下我在思考本题时的一个感悟,即后缀数组与后缀自动机的等价性。 众所周知,SA时有一个常见思路就是针对 height 数组建一棵笛卡尔树。但是,该笛卡尔树,唯一等价于SA针对的串的反串的parent tree。具体可以分别
阅读全文
摘要:XXXVI.LOJ#6198. 谢特 SA+笛卡尔树+01trie+启发式合并模板四合一,省选模板练习必备神器 考虑SA后建立笛卡尔树。问题转换为在笛卡尔树的一段区间中(此时该区间内任意两条后缀的LCP长度均为区间中 最小值)任意两条后缀的 最大值。是经典
阅读全文
摘要:XXXII.CF1063F String Journey 题解
阅读全文
摘要:XXVIII.[BZOJ3277]串/CF204E Little Elephant and Strings 这两题是重题,代码改都不改交上去就能A,故放在一起讲。 网上的大多数SA题解都是或的复杂度,太令人不爽了。因此,这里有一种复杂度的
阅读全文
摘要:XXIV.CF123D String 没啥好说的,直接建出笛卡尔树出来,然后统计一下和即可。复杂度,假如你用DC3的话。 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=
阅读全文
摘要:XVI.[NOI2015]品酒大会 我居然能自己AC NOI的原题,后缀数组果然简单 首先当然是轻松建出SA。 我们考虑借鉴XII.[TJOI2015]弦论的思想,建出笛卡尔树。则对于当前的长度,它出现在了$(l,r)\dfrac{(r-l+2)(r-l+1
阅读全文
摘要:XIII.[BJWC2010]外星联络 和上题一样,没啥好说的,直接建出笛卡尔树即可。 代码: #include<bits/stdc++.h> using namespace std; int stk[500100],tp,L[500100],R[500100],id,pt; namespace S
阅读全文
摘要:CXLVIII.[NOI2019] 机器人 首先发现每个点向左向右能到达的位置就类似笛卡尔树上一个点的代表区间,不同的是这里有多个最大值时选取最右的一个。于是我们可以想到一个DP, 表示区间 的最大值恰为 或不大于 ,两种设的方
阅读全文
摘要:CXLIV.[IOI2018] meetings 会议 被人坑了说这题是CDQ分治的题,一小时想不出来开了题解发现是道DP 大概不会有人像我一样一开始想了极其诡异的DP,然后发现可以用莫队+树剖优化到 ,但是这复杂度估计比 还差…… 扯远
阅读全文