后缀数组
_Ark
这个作者很懒,什么都没留下…
展开
-
省选模拟赛 T1 反攻密令 (后缀数组)
题意 给出mmm和字符串SSS,要求把SSS分成mmm部分使得每一部分的最大字典序子串中字典序最大的最小。并输出。 m≤15,∣S∣≤105m\le 15,|S|\le 10^5m≤15,∣S∣≤105 思路 考试时想到直接二分所有子串,然后拿出来check,看至少要分成多少块才能保证每一块的最大子串小于等于二分到的串。如果至少需要的块数大于mmm就不满足,否则满足,调整上下界继续二分。发现每一块...原创 2020-01-29 19:12:35 · 1460 阅读 · 0 评论 -
BZOJ 4278: [ONTAK2015]Tasowanie (后缀数组 / 二分+hash)
直接归并,然后如果哪边的后缀字典序比较小就去哪边,然后就可以后缀数组 博客传送门… 但是本蒟蒻不会后缀数组 于是就hash后二分找相同的最长区间,然后比较后一个谁更小… 时间复杂度O(nlogn)O(nlogn)O(nlogn). 注意先在最后加一个极大值.因为如果一个序列A到末尾刚好与序列B的一段相等,那么一定是取B更优,因为B后面可能有更小的. hack数据 4 2 2 2 1 3 2 2 ...原创 2019-03-29 22:16:47 · 194 阅读 · 0 评论 -
Luogu P3809 【模板】后缀排序(后缀数组板题)
忘完了… emmm…原创 2019-03-29 23:03:40 · 214 阅读 · 0 评论 -
BZOJ 2119: 股市的预测 (Hash / 后缀数组 + st表)
转博客大法好 自己画一画看一看,就会体会到这个设置关键点的强大之处了. CODE(sa) O(nlogn)→1436msO(nlogn)\to 1436msO(nlogn)→1436ms #include <bits/stdc++.h> using namespace std; typedef long long LL; template<class T>inline vo...原创 2019-03-31 22:38:33 · 211 阅读 · 0 评论 -
BZOJ 1692: [Usaco2007 Dec]队列变换 (后缀数组/二分+Hash)
跟BZOJ 4278: [ONTAK2015]Tasowanie一模一样 SA的做法就是把原串倒过来接在原串后面,O(nlogn)O(nlogn)O(nlogn)做后缀数组,就能O(1)O(1)O(1)够比较每个前缀和后缀谁的字典序小了. Hash二分也可以. CODE(SA) O(nlogn)O(nlogn)O(nlogn) #include<bits/stdc++.h> using...原创 2019-04-01 19:03:13 · 170 阅读 · 0 评论 -
BZOJ 2946 [Poi2000]公共串 (二分+Hash/二分+后缀数组/后缀自动机)
求多串的最长公共字串. 法1: 二分长度+hash 传送门 法2: 二分+后缀数组 传送门 法3: 后缀自动机 拿第一个串建自动机,然后用其他串在上面匹配.每次求出SAM上每个节点的最长匹配长度后,再在全局取最小值(因为是所有串的公共串)就行了. CODE #include<bits/stdc++.h> using namespace std; char cb[1<<15]...原创 2019-04-01 20:28:20 · 227 阅读 · 0 评论 -
BZOJ 3238: [Ahoi2013]差异 (后缀数组+单调栈)
题目要求 所以Ans=n∗(n−1)∗(n+1)2−2∗∑1≤i<j≤nlcp(Ti,Tj)Ans=\frac{n*(n-1)*(n+1)}{2}-2*\sum_{1\le i<j\le n}lcp(T_i, T_j)Ans=2n∗(n−1)∗(n+1)−2∗1≤i<j≤n∑lcp(Ti,Tj) 后面要减去的部分是两两后缀的lcplcplcp,那么做了后缀...原创 2019-04-01 21:45:07 · 158 阅读 · 0 评论 -
BZOJ 2882: 工艺 (SA/SAM/最小表示法)
我写的O(nlogn)O(nlogn)O(nlogn)的SA 8000ms 被 O(n)O(n)O(n)的SAM 2800ms 和 O(n)O(n)O(n)的最小表示法 500ms 头都锤爆… CODE 贴上大常数选手的代码 #include<bits/stdc++.h> using namespace std; char cb[1<<15],*cs=cb,*ct=cb; ...原创 2019-04-02 08:09:57 · 200 阅读 · 0 评论 -
BZOJ 5496: [2019省队联测]字符串问题 (后缀数组+主席树优化建图+拓扑排序)
题意 略 分析 考场上写了暴力建图40分溜了…(结果只得了30分) 然后只要优化建边就行了 首先给出的支配关系无法优化,就直接A向它支配的B连边. 考虑B向以B作为前缀的所有A连边,做一遍后缀数组,两个区间的左端点位置的LCP一定大于等于B的长度.在排好序的后缀数组上就是一段区间.然后用线段树优化建边. 那么用ST表倍增算一下能拓展的区间就行了. 然后由于只能向长度大于自己的连边,就按长度排序然后...原创 2019-04-13 17:17:27 · 258 阅读 · 0 评论