20240919 短时赛
20240919 短时训练赛
A Shuffle
赛时一直不知道怎么不重,唐了两个小时。
注意到 \(n \leq 5000\),那么先 \(O(n^2)\) 枚举发生变化的第一个数和最后一个数,这两个位置不同时方案显然不同,于是不会算重。发生变化的这两个数强制改,剩下的乱放,组合数算一下就好。
B Rain
C XOR Tree
注意到改点权可以随便改,那么随便改一个 \(a_u=2^{u+1000000}\) 就能让经过这个点的路径合法。转化路径的异或和为 \(d_u⊕d_v⊕a_{lca(u,v)}\)。那么我们枚举 \(lca\),只需判断子树内是否存在这样的两个点即可。用 set 维护子树内所有的 \(d_u\),遍历子树时枚举 set 中的所有元素,查询另一个 set 中是否存在对应元素。如果存在,就说明需要修改 \(a_u\),并将点 \(u\) 的 set 清空。这样是 \(O(n^2\log n)\) 的,用启发式合并优化就能做到 \(O(n\log^2n)\)。