P15761 [JAG 2025 Summer Camp #1] Colored Tree and Path
P15761 [JAG 2025 Summer Camp #1] Colored Tree and Path
给定一棵 \(n\) 个节点的无根树,节点 \(i\) 的颜色为 \(c_i\),保证 \(1 \le c_i \le n\)。
回答 \(q\) 次询问,给定 \(u_1,v_1,u_2,k_2\),求最大的非负整数 \(k \in [0,n]\),满足 \(\forall i \in [1,k]\),树链 \((u_1,v_1)\) 上颜色为 \(i\) 的节点数等于树链 \((u_2,v_2)\) 上颜色为 \(i\) 的节点数。
\(n,q \le 10^5\),4 秒,1024 MB。
考虑线段树维护哈希,询问时提取 \(u_1 \to v_1\) 和 \(u_2 \to v_2\) 树链对应的线段树,将两棵树作差后在线段树上二分。
多项式哈希和 Sum Hash 都具有可减性,实现采用了双模多项式哈希。
我们求出每个点到根链的线段树,则树链的线段树可以用树上差分的方法求出。使用可持久化线段树预处理,询问在八棵线段树上同步二分即可,复杂度 \(O(q \log n)\)。代码。

浙公网安备 33010602011771号