NOIP 第十四次
时效性
A
设 $S$ 为关键点构成的虚树覆盖到的点集(注意不是虚树点集),
查询 $x$ 时,可以发现 $x$ 能到的点集就是 $S$ 并上 $x$ 到任意一个关键点(容易发现选哪个关键点都是一样的)的点集。
钦定第一次操作的 $x$ 为根,则 $S$ 即为所有关键点的根链之并,
$S$ 的最小值即为这些根链最小值的最小值,每次加关键点时更新这个最小值即可。
然后钦定“$x$ 到任意一个关键点的点集”中这个关键点选择根,则这个点集的最小值就是 $x$ 的根链最小值。
两部分最小值取最小值即可。
B
可以发现若最终所有棋子移动到 $x$,则操作次数一定是初始时所有棋子到 $x$ 的距离和除以二,
于是只需求出哪些 $x$ 可以作为最终所有棋子移动到的位置。
设 $s_i$ 表示 $i$ 子树内初始时棋子个数,$f_i$ 表示 $i$ 子树内棋子经过若干操作后到 $i$ 距离和最小是多少,$g_i$ 表示 $i$ 子树内棋子初始时到 $i$ 距离和,
考虑 $u$ 若有一孩子 $v$ 满足 $f_v+s_v>g_u-g_v-s_v$,则 $v$ 子树内的棋子一定不能全部移动到 $u$ 上,
于是此时的最优策略为其他所有子树的棋子均选择 $v$ 子树内的棋子匹配,
这样其他所有子树的棋子均被移到 $u$ 上,而 $v$ 子树内的棋子到 $u$ 距离和还剩 $f_v+s_v-(g_u-g_v-s_v)$,
也就是 $f_u=f_v+s_v-(g_u-g_v-s_v)$。
如果 $u$ 没有这样的孩子 $v$,那最终至多剩一个棋子与 $u$ 距离为 $1$,也就是 $f_u=g_u\bmod 2$。
以 $x$ 为根跑这个 DP,若得到的 $f_x=0$,则 $x$ 可以作为最终所有棋子移动到的位置。
发现需要以每个点为根的 DP 值,换根 DP 即可。
C
警惕 $n=1$。
由期望线性性,只需把每个 $P(f(s_i)=f(s_{(i\bmod n)+1}))$ 加起来,
考虑给定 $x=a_i,y=a_{(i\bmod n)+1}$,如何求出 $P(f(s_i)=f(s_{(i\bmod n)+1}))$。
设 $c_j/d_j$ 表示 $P(f(s_i)=j)/P(f(s_{(i\bmod n)+1})=j)$,则 $P(f(s_i)=f(s_{(i\bmod n)+1}))=\sum c_j\times d_j$。
设 $f_o$ 表示循环节为 $o$ 的串的个数,以 $c_j$ 为例,
所有循环节为 $o\mid x$ 的串,会使 $c_j|j\le o$ 加上 $\dfrac{f_o}{26^x}\times\dfrac 1o$。
$d_j$ 同理,问题变为求两个初始全 $0$ 的序列,分别经过若干次前缀加后,对应位乘积之和,扫描线即可。
现在只剩 $f_o$ 没有求出。可以发现 $g_p=\sum\limits_{o\mid p}f_o=26^p$,狄利克雷前缀差分即可。
D
设 $s\to t$ 的长度为 $L$,记 $p$ 为关键点,当且仅当从 $p$ 能引出 $3$ 条互不相交的,长度为 $L$ 的路径,
则只需判断阵型的某一端能否到达关键点。
以某个关键点为根,依次将阵型的两端移动至其子树内最深的叶子,
若某一时刻阵型的两端有祖先关系,则阵型可以到达关键点。