Loading

题解:qoj#4889 [集训队互测 2021]愚蠢的在线法官

题意简述

给定一个 \(n\) 个点的有根树,点有点权 \(v_i\)。再给定一个长为 \(m\) 的序列 \(a_{1,2,\dots,m}\),构造 \(m\) 阶方阵 \(B\),满足 \(B_{i,j}=v_{\mathrm{lca}(a_i,a_j)}\),求其行列式 \(|B|\)

\(n,k\leq 5\times 10^5\)

特殊性质:\(m>n\)

\(a\) 中有重复元素时,\(B\) 中会出现相同的两行,故 \(|B|=0\)

下面都有 \(m\leq n\)\(a\) 中元素不重。

特殊性质:\(a\)\(1,2,\dots,n\) 的排列

交换两个 \(a\) 相当于交换 \(B\) 中两行两列,行列式不变,故不妨设 \(a_i=i\)

对于拆行列式,有一个方法是利用行列式的可乘性,即对于 \(n\) 阶方阵 \(B,C,D\),若 \(B=CD\),则 \(|B|=|C||D|\)

例如对于 \(B_{i,j}=\gcd(i,j)\),由 \(\gcd(i,j)=\sum_{d|i\wedge d|j}\varphi(d)\) 那么构造 \(C_{i,j}=[j|i],D_{i,j}=[i|j]\varphi(i)\),则 \(B=CD\)。而 \(C\) 为上三角矩阵,\(D\) 为下三角矩阵,行列式均容易计算,有 \(|B|=|C||D|=\prod_{i=1}^n\varphi(i)\)

上面构造成立是因为 \(\gcd(i,j)\) 就是 \(i,j\) 所有的公因数 \(\varphi\) 之和,而且 \(i|j\) 蕴含 \(i\leq j\) 使得 \(C,D\) 是便于计算行列式的上/下三角矩阵。

下面考虑对 \(B_{i,j}=v_{\mathrm{lca}(i,j)}\) 进行类似的构造。设 \(\Delta v_i=v_i-v_{fa_i}\),记 \(i\to j\) 表示 \(i\)\(j\) 的祖先,那么 $ v_{\mathrm{lca}(i,j)}$ 就是 \(i,j\) 的所有公共祖先的 \(\Delta v\) 之和,即 \(v_{\mathrm{lca}(i,j)}=\sum_{x\to i,x\to j}\Delta v_x\)。那么构造 \(C_{i,j}=[j\to i],D_{i,j}=[i\to j]\Delta v_i\),就有 \(B=CD\)。虽然 \(i\to j\) 并不能推出 \(i\leq j\),但是由于可以交换下标,不妨设 \(fa_i<i\),那么就有 \(i\to j\) 蕴含 \(i\leq j\),所以 \(|C|=1\)\(|D|=\prod_{i=1}^n\Delta v_i\)

正解

对于 \(m\neq n\),上面的构造出现了问题。\(B\)\(m\times m\) 的,而因为 \(a_i,a_j\) 的公共祖先可能是 \(1,2,\dots n\) 中的任何一个,所以 \(C,D\) 就只能是 \(m\times n,n\times m\) 的,这样 \(C,D\) 就不是方阵了。

那么应用 Binet-Cauchy 公式,简单来说就是对于 \(C_{m\times n},D_{n\times m}\),有:

\[\begin{equation*} |CD|= \begin{cases} 0, &m>n\\ \displaystyle\sum_{S\subset\{1,2,\dots,n\}\wedge|S|=m}|C_{\ast,S}||D_{S,\ast}|, &m\leq n \end{cases} \end{equation*} \]

考虑行列式的意义,那么就是要选出一个大小为 \(m\) 的点集 \(S\),再构造两个排列 \(p_1,p_2,\dots,p_m\)\(q_1,q_2,\dots,q_m\),满足 \(S_i\to a_{p_i},S_i\to a_{q_i}\),权值为 \(\prod_{i=1}^m\Delta v_{S_i}\times (-1)^{\tau(p)+\tau(q)}\)

\(a\) 中的点为关键点,那么 \(p\) 就对应了一组 \(S\) 中的点和关键点的匹配,其中每个 \(S\) 中的点只能匹配子树中的关键点。考虑贪心求这个匹配的过程,那么自底向上考虑每个 \(S\) 中的点 \(x\):如果此时考虑的 \(x\) 的子树内没有未匹配的关键点,那么不存在匹配;否则将 \(x\) 与子树中任意有一个未匹配点匹配。

注意到如果存在至少两组匹配,则说明考虑到某个 \(x\in S\) 时,子树内至少有两个未匹配的关键点 \(u,v\)。假设 \(x\) 匹配 \(u\)\(x\) 某个祖先 \(y\) 匹配 \(v\),那么让 \(x\) 匹配 \(v\)\(y\) 匹配 \(u\) 仍然合法,而排列奇偶性改变,权值互为相反数。

那么可以说明,如果 \(S\) 对应的匹配不唯一,一定可以构造双射证明权值总和为 \(0\),也就是只需要考虑对应的匹配唯一的 \(S\)。此时一定有 \(p=q\),所以权值为 \(\prod_{i=1}^m\Delta v_{S_i}\)

根据上面的贪心进行 dp 即可。复杂度 \(O(n)\)

posted @ 2025-05-05 11:46  complexor  阅读(42)  评论(0)    收藏  举报