[JSOI2019]节日庆典(Z-algorithm)】的更多相关文章

[JSOI2019]节日庆典 做题心得 一个性质有趣的字符串题 这要是在考场上我肯定做不出来吧 一开始还以为要 SAM 什么的暴力搞,没想到只用到了 \(Z\) 函数 -- 也是我生疏了罢 (学了啥忘了啥,这可怎么去wc啊啊啊 思路 考虑维护候选集合 \(S\),表示这个位置 可能 是最优位置. 假设我们可以知道 \(S\),拿 \(Z\) 函数求一下 \(LCP\) 就可以知道是不是最优的了. 大胆猜测一个性质,要么可以快速的找 \(S\) 中最小的位置,要么 \(S\) 的大小不会很大,可以…
要想让一个位置作为最小循环,其必须是最小后缀,然后一个字符串的最小后缀不超过O(logn)个,于是维护备选集合即可. 然而要在O(n)复杂度求解,需要求出原串后缀与原串的LCP长度,需要用Z-algorithm.而此时由于备选后缀存在前缀关系,比较时只需用到每个后缀与原串的LCP #include<bits/stdc++.h> using namespace std; ; int n,ans,lcp[N]; char str[N]; vector<int>f,g; int cmp(…
LOJ#3103. 「JSOI2019」节日庆典 能当最小位置的值一定是一个最小后缀,而有用的最小后缀不超过\(\log n\)个 为什么不超过\(\log n\)个,看了一下zsy的博客.. 假如\(i = AAB\),\(j = AB\),\(B\)是\(A\)的一个严格前缀,\(|j| < |i| < 2|j|\) 但是有\(k = B\),导致了若\(j\)比\(i\)优,则\(k\)会比\(j\)优,\(j\)比\(k\)优,则\(i\)会比\(j\)优,那么\(j\)就没用了 然后…
题意 给定字符串 \(S\) ,对于 \(S\) 的每个前缀 \(T\) 求 \(T\) 所有循环同构串的字典序最小的串,输出其起始下标.(如有多个输出最靠前的) \(|S| \le 3 \times 10^6\) 题解 本文参考了官方题解. 假设我们现在考虑前缀 \(S[1 \dots k]\) ,我们考虑哪些起始位置可能成为答案,我们称作候选点.也就是对于这些候选点来说,对于 \(i \ge k\) ,他们永远都会比非候选点更加优秀. 我们首先可以通过不循环移位比出他们的字典序的话,肯定可以…
\(\mathscr{Description}\)   Link.   给定字符串 \(S\),求 \(S\) 的每个前缀的最小表示法起始下标(若有多个,取最小的).   \(|S|\le3\times10^6\). \(\mathscr{Solution}\)   注意到一个显然的事实,对于某个前缀 \(S[:i]\) 以及两个起始下标 \(p,q\),若已有 \(S[p:i]<S[q:i]\),那么在所有的 \(j>i\) 中,都有 \(S[p:j]<S[q:j]\).换言之,最终…
目录 问题引入 CaiOJ 1461 [EXKMP]最长共同前缀长度 算法讲解 匹配过程 next 的求解 复杂度证明 代码解决 一些例题 UOJ #5. [NOI2014]动物园 CF1051E Vasya and Big Integers 问题引入 众所周知,\(\mathrm{KMP}\) 算法是最为经典的单模板字符串匹配问题的线性解法.那么 \(\mathrm{ExKMP}\) 字面意义是 \(\mathrm{KMP}\) 的扩展,那么它是解决什么问题呢? CaiOJ 1461 [EXK…
浅谈从 Lyndon Words 到 Three Squares Lemma By zghtyarecrenj 本文包括:Lyndon Words & Significant Suffixes & Lyndon Array & Runs & Lyndon Tree & Three Squares Lemma. 禁止转载全文,转载部分需要注明出处. 前言 本文正在重写 如果你发现笔者有写错的地方,请联系笔者.(尽量不要用博客园评论,我不会经常看,建议用洛谷私信我或者加…
[POI2011]OKR-Periodicity 考虑递归地构造,设 \(\text{solve(s)}\) 表示字典序最小的,\(\text{border}\) 集合和 \(S\) 的 \(\text{border}\) 集合相等的字符串. 设 \(S\) 的最长 \(\text{border}\) 是 \(t\),我们分下列几种情况讨论: 第一种情况,\(S\) 不存在 \(\text{border}\),那么最优的方案就是 \(0,0...1\)(长度为 \(1\) 的话就是 \(0\))…
我们定义一个串是 \(\text{Lyndon}\) 串,当且仅当这个串的最小后缀就是这个串本身. 该命题等价于这个串是它的所有循环表示中字典序最小的. 引理 1:如果 \(u\) 和 \(v\) 都是 \(\text{Lyndon}\) 串并且 \(u<v\),则 \(uv\) 也是 \(\text{Lyndon}\) 串. 证明: 1.若 \(\operatorname{len}(u)\ge\operatorname{len}(v)\) 这时,\(u\) 和 \(v\) 这两个串在 \(\o…
JSOI的题质量很高-- 精准预测(2-SAT.拓扑排序.bitset) 不难发现两个条件都可以用经典的2-SAT连边方式连边,考虑如何加入时间的限制.对于第\(x\)个人在\(t\)时刻的状态是生/死建点\((x,0/1,t)\),连上边\((x , 0 , t) \rightarrow (x , 0 , t-1)\)和\((x,1,t) \rightarrow (x , 1 , t+1)\)然后用2-SAT方式连边,就可以加入时间限制了. 上面的点数实在是太多了,一种朴素的想法是把所有2-S…