25.07.01
原题场但是放两道大数据结构?
白祇重工(
A
记 \(F(x)\) 表示操作到全为 \(x\) 的期望步数。
设 \(f_i\) 表示当前已经有 \(i\) 个钦定的最终色的步数。
那么 \(F(x) = f_{cnt_x}\)。
然后考虑算 \(f\)。
考虑一次操作枚举选了多少个最终色和非最终色来计算贡献:
那两个分数是能不能在选的球里出一个最终色的概率。
你发现式子里面这个 \(j\) 只存在于系数中,而且把与 \(j\) 有关的式子提出来都长成 \(\sum_{j}^{n - x}\binom{n - x}{j}\) 和 \(\sum_{j}^{n - x}\binom{n - x}{j}j\) 的可化简形式。
前者等于 \(2^{n - x}\),后者等于 \((n - x)2^{n - x - 1}\)。
所以化简之后是
然后这个式子大约是一个 \(f_{x} = \sum\limits_{i = 0}^{x + 1} coef_i\cdot f_{i} + 1\) 的形式,可以从 \(f_{0 \sim x}\) 得到 \(f_{x + 1}\),所以我们可以开始递推了?
并不,我们只知道 \(f_{n} = 0\),而这个式子是从 \(0\) 开始递推的。
|| @KinNa_Sky : 你是说,这个 dp 式子在消元之后变成了 f[i]=f[i+1]+常数 ,所以从错误的初值开始递推只会导致 dp 值在值域上平移,而最后求答案的式子在改变一个常数后就和答案一样了?
并没有消元,但是根据样例验证如果从 \(f_0 = 0\) 递推 \(f\) 确实只有值域上的平移?
哦对了我们的答案不是 \(F\)。
再记 \(G(x)\) 是 \(x\) 作为第一个全相同颜色的步数,\(P(x)\) 表示 \(x\) 作为第一个全相同颜色的概率(显然有 \(\sum P(x) = 1\)),我们最后所求为 \(\sum G(x)P(x)\)。
考虑三者关系
B
思路就是题解第一篇
C
考场上是平衡树思路,狂码 2h 写成了一坨。
最后 10pts 遗憾离场。
赛后拿 LCT 改的。
把所有可能的人的存在位置当作点,注意一个位置的朝向是确定的。
那么你知道了墙和方位(上下左右)可以确定一个点,知道了墙和朝向也可以确定一个点。
这个位置的后继就是朝向方向的点逆时针枚举墙,找到的第一堵墙就是后继。
同理背向方向的点顺时针枚举找到的第一堵墙就是前驱。
每个点一个前驱一个后继所以图上只有环。
考虑 LCT 维护。
只要维护实链点数和树的点数就可以回答询问。
维护树的点数要用到虚儿子信息,考虑到最多两个虚儿子可以暴力维护。
然后考虑修改,记修改墙两侧的点为 \(A, B\),为了避免讨论,可以找到当修改墙存在时 \(A, B\) 的前驱和后继,将涉及到的六个点在修改前的边都断掉,修改后再连上,特别的,如果修改后点已经不存在了就不连。
如果不想去重需要在连边和断边时加上合法性检查。
然后有一个问题是 LCT 维护环其实会断掉一条边,如果我们在修改时合并两个环,就会断掉两条边,图就不连通了。
可以对每棵 LCT 记录断掉的是哪条边,每次修改前取出来,修改后再重新连一遍。
如果边的端点是修改涉及的六个点之一则不用连,因为断掉的边可能已经修改了。
然后维护断边只需要在连边的合法性检查里再特判一下非法连边是否是重边,不是就在根上打一个断边是哪条边的 tag。

浙公网安备 33010602011771号