第五十次
时效性
A
记 $f(n)=\sum\limits_{i=0}^{n-1}\text{popcount}(i\oplus(i+1))$,则 $f(n)=f(\sum 2^i)=\sum f(2^i)=\sum2^{i+1}-1=2\sum2^i-\sum 1=2n-\text{popcount}(n)$。
B
观察样例解释,发现每次按比例 All in 是最优方案,而此时幕后黑手的决策不会影响答案,直接模拟即可。
C
$$ \begin{aligned} &\sum_{i\in\text{subtree(u)}}d(u,i)^k\\ =&\sum_{i\in\text{subtree(u)}}\sum\limits_{j=0}^k{d(u,i)\choose j}\begin{Bmatrix}k\\j\end{Bmatrix}j!\\ =&\sum\limits_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}j!\sum_{i\in\text{subtree(u)}}{d(u,i)\choose j} \end{aligned} $$
设 $f_{u,j}=\sum\limits_{i\in\text{subtree(u)}}{d(u,i)\choose j}$,则 $f_{u,j}=\sum\limits_{i\in\text{subtree(u)}}{d(u,i)\choose j}=\sum\limits_{i\in\text{subtree(u)}}{d(u,i)-1\choose j}-\sum\limits_{i\in\text{subtree(u)}}{d(u,i)-1\choose j-1}=f_{v,j}-f_{v,j-1}$。
然后这是子树内的,换根一遍得到全局的。
D
DFS 序分块,变成区间深度模 $x$ 等于 $y$ 的点加 $z$。散块暴力,考虑整块。
对 $x$ 根号分治。$x\le\sqrt n$ 时,维护 $X_{i,j,k}$ 表示 $i$ 块被形如模 $j$ 等于 $k$ 的修改加了多少即可。
$x>\sqrt n$ 时维护 $Y_{i,j}$ 表示 $i$ 块内深度为 $j$ 的点被 $x>\sqrt n$ 的修改加了多少,
枚举此次操作影响到的深度 $d$,则需要对 $Y_{[l,r],d}$ 区间加 $z$,在第一维上差分即可。
空间复杂度 $O(n\sqrt n)$,调一调块长和阈值。