闲话 23.3.21

发布时间 2023-03-22 21:11:11作者: joke3579

闲话

明天集训就结束了(
同学们吃外卖吃够了吗(

image

upd:
今日推歌:热异常(covered by 异世界情绪)
异世界情绪为什么是神?

模拟赛

T1
会维护静态区间子区间 mex 和吧?
不会?会维护静态区间 mex 吧?套个历史版本和就没了。
mex 是最小,mix 其实就是次小。因此支持一个覆盖最小、覆盖次小,并对次小支持一个历史版本和即可。
总复杂度 \(O(n\log n)\)

T2
注意到我们只需要设计一条 \(X\to x, Y\to y\) 的路径,满足 \(x = y\)\(x, y\) 的度数不同。这样要么可以区分出初始点,要么终点相同。
场上的做法正确性不会证。注意到(?)这两条路径每次跳的出边必须在 vector 中编号相同。这样我们暴力遍历所有可能的路径是 \(O(n)\) 条。找出一条满足上面条件的路径并记录,如果 \(x = y\) 直接移动即可。反之可以区分出初始点。
总时间复杂度 \(O(n)\),但是正确性好像不是很有。跑一遍跑不出来就把 \(X, Y\) 交换一下再跑一遍。
正解不会

T3
可以发现,每个点对不平衡度的贡献是独立的,我们只需要对每个点分别计算答案,最后用 max 卷积合并即可。
对单独一个点,我们不妨考虑容斥,转化成不平衡度不超过 \(k\) 的方案数。由于这也就是每次在两侧找一个子树加点,我们可以把他放在二维平面上转成游走问题。
考虑这就是计数从 \((0, 0)\)\((n, m)\),即左右子树大小;放左子树是向右,放右子树是向上;不经过 \(y = x - k + 1, y = x + k - 1\) 的路径数。
两条线卡路径可以转化成镜面反射容斥,发现答案就是

\[\binom{n + m}{m} - \sum_{i\ge 1} (-1)^i\left( \binom{n + m}{m - (k + 1)i} + \binom{n + m}{m + (k + 1)i}\right) \]

这个式子可以 \(O(n/k)\) 地计算。题解说一个点的 \(k\) 和更小的子树大小同阶,因此可以分析到 \(O(n\log^2 n)\)

杂题

CF903G

一张图分为两部分,左右都有 \(n\) 个节点,\(A_i\rightarrow A_{i+1}\) 连边,\(B_i\rightarrow B_{i+1}\) 连边,容量给出。

\(m\)\(A_i\rightarrow B_j\) 有边,容量给出。

你需要先求出原图从 \(A_1\)\(B_n\) 的最大流,然后有 \(q\) 次操作,每次操作给出 \(i\),先修改 \(A_i\rightarrow A_{i+1}\) 的边的容量,然后询问从 \(A_1\)\(B_n\) 的最大流。

\(2\leq n,m\leq 2\times 10^5\),容量\(\ \leq 10^9\)

感谢 @Broken_Eclipse 大佬推的题!

根据最大流最小割定理,将答案转化成最小割。考虑最后答案的形式。
我们发现,最优解一定是 \((a, a)\) 割一条,\((b, b)\) 割一条,\((a, b)\) 割若干条的形式,因为这一定不劣。所以考虑构造这形式的解,取最小值一定能得到答案。

假设左边割了 \(A_i\to A_{i + 1}\),右边割了 \(B_j\to B_{j + 1}\),那我们需要割掉的 \(A\to B\) 一定形如 \(A\le A_i, B_{j + 1} \le B\),这画个图就能理解了。而且可以发现,确定 \((i, j)\) 后要割掉的 \(A\to B\) 是确定的。我们不妨枚举一个 \(i\),计算最小的 \(j\)

对一个 \((i, j)\),具体的形式是

\[\text{cost}(A_i\to A_{i + 1}) + \text{cost}(B_j\to B_{j + 1}) + \sum_{x = 1}^i \sum_{y = j + 1}^n \text{cost}(A_x\to B_y) \]

考虑确定一个 \(i\)\(\text{cost}(A_i\to A_{i + 1})\) 的贡献是不计的,而且剩下的部分是静态的,因此在整个过程中,\(i\) 对应的 \(j\) 是确定的一个,可以预处理。
预处理的方式就是线段树。这个形式应该比较好构造,复杂度大致是 \(O(n + m\log n)\)。记 \(i\) 对应的 \(j\)\(i_2\)

\[g(i) = \text{cost}(B_{i_2}\to B_{i_2 + 1}) + \sum_{x = 1}^i \sum_{y = i_2 + 1}^n \text{cost}(A_x\to B_y) \]

根据上面的内容,这是已经处理出的。并记 \(f(i) = \text{cost}(A_i\to A_{i + 1})\)

因此我们就需要支持单点修改 \(f(i)\),支持查询 \(f(i) + g(i)\) 最小值。仍然是线段树。

总时间复杂度 \(O(n + (m + q)\log n)\)

Submission.



P7512

定义极长连续黑区间段为满足 \(1 \le L \le R \le p\) 的区间段 \([L,R]\),且编号在 \([L,R]\) 内的区间都是黑色,且其不能再扩展,即编号为 \(L-1\)(如果存在,下同)和 \(R+1\) 的区间都是白色。

给定 \(n\),并在数轴上截取 \([1,n]\) 的整点。考虑按以下步骤构造一种方案:

  1. 将这些整点划分成若干个区间 \([l_1,r_1],[l_2,r_2],\dots,[l_p,r_p]\),满足 \(l_1=1,r_p = n\),且对于 \(1 \le i < p\)\(r_i = l_{i+1}-1\);对于 \(1 \le i \le p\) 满足 \(l_i \le r_i\)(即区间均合法,两两不交且并为全集)。

  2. 将每个区间标记为黑色或是白色,但不允许第 \(1\) 个区间和第 \(p\) 个区间同时被标记为黑色。

  3. 在每个区间内选出一个子区间,称为绝妙子区间

  4. 在每个极长连续黑区间段中各选出一个黑色区间,称为绝妙黑区间

  5. 在所有的极长连续黑区间段中钦定若干个称作绝妙极长连续黑区间段

定义一种方案的权值为 黑色区间 的个数与 绝妙极长连续黑区间段 个数的和。请对每个 \(1\le s \le n\) 计数权值为 \(s\) 的方案。

\(1\le n\le 2\times 10^5\)

这题意好难读明白啊。

考虑先构造一个区间的方案数,再考虑染色并组合。一个长度为 \(i\) 的区间对答案的方案数是可能做为绝妙子区间出现的子区间数,也就是可重组合数 \(H(i, 2) = C(i + 1, 2)\)

设一个区间的 ogf 是 \(F(x)\),可以知道

\[F(x) = \sum_{i\ge 1}\binom{i + 1}{2}x^i = \frac{x}{(1 - x)^3} \]

考虑构造外层的形式,可以预料到我们只需要钦定颜色,随后是复合 \(F\) 的形式。记白色区间是 W,黑色区间是 B,可以知道最后的形式一定是 (W)B..BWB..BW...B..B(W) 的形式,两侧至少加一个 W。我们不妨先构造 B..BW 的形式,只在一边加 W 的两种情况是同构的,乘二即可;另外的情况只需要并入一个 W 即可。

令计数权值的占位元是 \(w\),我们对答案要提取的是 \(w^s\)
W 对权值没有额外贡献,ogf 就是 \(F(x)\)B..B 可以有任意多(\(\ge 0\))个,设它的 bgf 是 \(S(x, w)\),由于每一个极长连续黑区间段对答案的贡献是 B 的个数以及被钦定时的 \(1\),绝妙黑区间对方案数的贡献是 \(i\),可以知道

\[S(x, w) = \sum_{i\ge 0} i x^i w^i(1 + w) = \frac{xw(1 + w)}{(1 - xw)^2} \]

我们可以得到答案的 ogf \(f(w)\)

\[[x^n]\frac{2 + F(x)}{1 - F(x)\times S(F(x), w)} \]

下面考虑将 \(x\) 作为主元来看,非必要时我们不声明 \(w\)

考虑 \(F(x)\) 的复合逆可以 \(O(n\log n)\) 地牛顿迭代得到,我们不妨采用拉格朗日反演简化式子。设 \(G(x) = \dfrac{2 + x}{1 - x\times S(x)}, A(x) = F^{\langle -1\rangle}(x)\),我们知道

\[\begin{aligned} [x^n]G(F(x)) = [x^n]G(x) A'(x)\left(\frac{x}{A(x)}\right)^{n + 1} \end{aligned}\]

先考虑前面的 \(G(x)\) 部分。

\[\begin{aligned} G &= \frac{2 + x}{1 - \frac{x^2w(1 + w)}{(1 - xw)^2}} \\ &= \frac{(2 + x)(1 - xw)^2}{(1 - xw)^2 - x^2w(1 + w)} \\ &= \frac{(2 + x)(1 - 2xw + x^2w^2)}{1 - 2xw - x^2w} \\ &= \frac{2 - 4xw + 2x^2w^2 + x - 2x^2w + x^3w^2}{1 - 2xw - x^2w} \end{aligned}\]

我们知道 \(M(x) = A'(x)\left(\frac{x}{A(x)}\right)^{n + 1}\) 是不存在 \(w\) 项的。所以 \(w^s\) 项只可能出现在 \(G(x)\) 中,我们不妨先提取 \(w^s\) 项系数(这是一个 \(x\) 为变元的多项式)以期得到优秀的形式。考虑枚举上面的短多项式的项,我们能得到

\[\begin{aligned} &[w^s] \frac{cx^aw^b}{1 - 2xw - x^2w} \\ = \ & cx^a[w^{s - b}] \sum_{i\ge 0} (2xw + x^2w)^i \\ = \ & cx^a[w^{s - b}] \sum_{i\ge 0} x^iw^i(2 + x)^i \\ = \ & cx^a (2x + x^2)^{s - b} \end{aligned}\]

所以此时的答案就是

\[[x^n] cx^a (2x + x^2)^{s - b} M(x) = c[x^{n - a}y^{s - b}] \frac{M(x)}{1 - (2x + x^2)y} \]

考虑 \(P(x) = x(x + 2), Q(x) = M(P^{\langle-1\rangle}(x)), R(x) = Q(x) / 1 - xy\);可以知道 \(P^{\langle-1\rangle}(x) = \sqrt{1 + x} - 1\)。我们有

\[\begin{aligned} & [x^r] \frac{M(x)}{1 - (2x + x^2)y} \\ = \ & \frac{1}{r} [x^{r -1}] R'(x) \left(\frac{x}{P^{\langle-1\rangle}(x)}\right)^r \\ = \ & \frac{1}{r} [x^{r -1}] \left(\frac{Q(x)}{1 - xy}\right)'\left(\frac{x}{P^{\langle-1\rangle}(x)}\right)^r \end{aligned}\]

\(T(x) = \left(\frac{x}{P^{\langle-1\rangle}(x)}\right)^r\) 是好求的。我们只需要考虑前面的部分。

首先还是把求导处理掉。

\[\left(\frac{Q(x)}{1 - xy}\right)' = \frac{Q'(x)(1 - xy) + Q(x) (1 - xy)'}{(1 - xy)^2} = \frac{Q'(x) + y(Q(x) - xQ'(x))}{(1 - xy)^2} \]

然后化简

\[\begin{aligned} & [x^{r - 1} y^t] \left(\frac{Q(x)}{1 - xy}\right)'\left(\frac{x}{P^{\langle-1\rangle}(x)}\right)^r \\ = \ & [x^{r - 1} y^t] \frac{Q'(x) + y(Q(x) - xQ'(x))}{(1 - xy)^2}T(x) \\ = \ & [x^{r - 1} y^t] \left(Q'(x) + y\left(Q(x) - xQ'(x)\right)\right) T(x) \sum_{i\ge 0} (i + 1) x^i y^i \\ = \ & [x^{r - 1} y^t] \left( Q'(x) T(x) \sum_{i\ge 0} (i + 1) x^i y^i + y\left(Q(x) - xQ'(x)\right) T(x) \sum_{i\ge 0} (i + 1) x^i y^i\right) \\ = \ & (t + 1) [x^{r - 1 - t}] Q'(x) T(x) + t [x^{r - t}] \left(Q(x) - xQ'(x)\right) T(x) \end{aligned}\]

问题转化到求 \(Q(x) = M(\sqrt{1 + x} - 1)\),这等价于 \(M\) 作点值平移后求 \(M(\sqrt{1 + x})\)。这又可以看作求 \(M(\sqrt{x})\) 后点值平移。

\(M[x^{2n}] \to [x^n] M(\sqrt{x})\),所以偶次项系数容易处理。考虑奇数次项就是算

\[\begin{aligned} &\sum_{i\ge 0} M[2i + 1] \left(\sqrt{1 + x}\right)^{2i + 1} \\ = \ & \sum_{i\ge 0} M[2i + 1] \left(1 + x\right)^{i + 1/2} \\ = \ & \sum_{i\ge 0} M[2i + 1] \sum_{j\ge 0} \binom{i + 1/2}{j} x^j \\ = \ & \sum_{i\ge 0} M[2i + 1] \sum_{j\ge 0} \frac{(i + 1/2)(i - 1/2)(i - 3/2)\cdots (i - j + 3/2)}{j!} x^j \\ = \ & \sum_{i\ge 0} M[2i + 1] \sum_{j\ge 0} \frac{(2i + 1)(2i - 1)(2i - 3)\cdots (2i - 2j + 3)}{j!2^j} x^j \\ = \ & \sum_{i\ge 0} M[2i + 1] \sum_{j\ge 0} \frac{(2i + 1)!!}{j!2^j(2i - 2j + 1)!!} x^j \\ = \ & \sum_{j\ge 0} \frac{x^j}{j!2^j} \sum_{i\ge j} \frac{M[2i + 1](2i + 1)!!}{(2i - 2j + 1)!!} \end{aligned}\]

这是减卷积的形式。所以我们能做到大常数(?) \(O(n\log n)\) 求解。