USACO2023 US Open 2023 Contest, Platinum
Pareidola
题意:一个字符串的权值 \(B(s)\) 是 \(s\) 子序列中最大 "bessie" 重复次数,求字符串的所有子段的权值之和,有 \(Q\) 次单点修改。\(|S|,Q\le 2\times 10^5\)。
题解:信息是可以合并的,直接用线段树维护。线段树结点记录贪心匹配传入这个字符经过这个区间匹配到哪个字符,还有 \(suf_c\) 表示这个区间多少个后缀从 'b' 开始贪心匹配匹配到 \(c\),以及经过的字符数。\(pre_c\) 同理。然后合并 \(pre\) 和 \(suf\) 的信息算出子段的权值。
Good bitstrings
题意:给定一个 \(a,b\),初始有 \(ia,ib=0,0\),如果 \(ia,ib\) 在直线 \(y=\frac{bx}{a}\) 下方,则往上,记为操作 1,否则往右,记为操作 0,一个 \(a,b\) 对应一个 01 串。给定 \((a,b)\),求有多少 \((a',b')\) 是 \((a,b)\) 的前缀。\(a,b\le 10^{18}\)。
题解:本质上求的是直线上(下)前缀斜率最小值(最大值)个数。这个东西其实本质上是个 SB 树的逼近,然后有一些系数,都是小细节。本质上就是在 SB 树上找 (a,b)。
Triples of cows
题意:给定一棵树,按照 \(1..n\) 的顺序每次删去一个点,将这个点的邻居连边,并查询三元组 (a,b,c) 的个数,满足 (a,b),(b,c) 有边。
题解:维护这个图的圆方树。我们要找的是 圆-方-圆-方-圆 的链的个数,我们钦定一个链的答案在树上最浅的点上算。\(dp_{u,i}\) 表示 \(u\) 这个点长度为 \(i\) 的链的个数,这个是可以从下往上 \(dp\) 的,修改树结构是我们只需要撤销少量点的 \(dp\),并调整结构,再更新少量点的 \(dp\) 即可。复杂度是 \(O(n\log)\) 的。实现好的话也许可以线性。
本文来自博客园,作者:xay5421,转载请注明原文链接:https://www.cnblogs.com/xay5421/p/17259158.html