做题记录 25.2.19

\(\textcolor{purple}\odot\) AT_agc052_b [AGC052B] Tree Edges XOR

建立一个虚点作为根,\(1\) 连向虚点,边权先不确定

对于原树和目标树,分别令点权为该点到根的路径上的边权异或和

则操作边 \((i,fa_i)\) 等价于交换 \(i\)\(fa_i\) 的点权

显然两树相等等价于点权构成的可重集相等

原树和目标树 \(1\) 到虚点的边权为 \(0\) 的情况下,算出 \(bg_i\)\(ed_i\) 分别表示原树和目标树上的点权

则原问题有解等价于存在非负整数 \(x\),使得 \(\{bg_i\oplus x\mid1\le i\le n\}=\{ed_i\mid1\le i\le n\}\)(此处为可重集)

其必要条件为 $\oplus_{i=1}^n(bg_i\oplus x)=\oplus_{i=1}^n ed_i $,由于保证了 \(n\) 为奇数,其等价于 \(x=\oplus_{i=1}^n (bg_i\oplus ed_i)\)

将其带回 \(\{bg_i\oplus x\mid1\le i\le n\}=\{ed_i\mid1\le i\le n\}\) 检验即可

时间复杂度 \(O(n\log n)\),瓶颈在于排序

代码

参考

\(\textcolor{purple}\odot\) AT_agc060_c [AGC060C] Large Heap

\(U\)\(1\) 向左走 \(a\) 步到达的点,\(V\)\(1\) 向右走 \(b\) 步到达的点

由于均匀性,只保留 \(O(U-1-V)\) 的链的情况下答案不变

考虑从小到大填链上的数,父亲填好才能填儿子,等价于从根出发,每次左侧延伸一步或右侧延伸一步

\(f_{i,j}\) 表示目前左侧已经走了 \(i\) 步,右侧将要走第 \(j\) 步,前一步走了左侧,从起点到达该状态的概率

\(f_{1,1}=\frac 12\)(第一步有两种可能)

答案为 \(\sum_{i=1}^b f_{a,i}\)(左侧先到达)

\(sz_i\) 表示堆中到根的距离为 \(i\) 的节点所在子树中点的数量,容易 \(O(n)\) 递推

则从 \(f_{i,j}\) 对应状态出发,走左侧和走右侧的概率之比为 \(sz_{i+1}:sz_j\)

若向左,则转移到 \(f_{i+1,j}\)

\[\frac{sz_{i+1}}{sz_{i+1}+sz_j}\cdot f_{i,j}\to f_{i+1,j} \]

若向右,则左侧已经走了 \(i\) 步,右侧已经走了 \(j\) 步,但左右大小和上述相反,因此交换左右,此时左侧已经走了 \(j\) 步,右侧将要走第 \(i+1\) 步,转移到 \(f_{j,i+1}\)

\[\frac{sz_j}{sz_{i+1}+sz_j}\cdot f_{i,j}\to f_{j,i+1} \]

时间复杂度 \(O(n^2\log p)\),可以通过线性求 \(n\) 个任意数逆元优化到 \(O(n^2)\)(假定 \(O(\log p)<O(n)\)),空间也可优化到 \(O(n)\)

代码

参考

posted @ 2025-02-20 13:01  Hstry  阅读(5)  评论(0)    收藏  举报