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)\)

posted @ 2024-11-08 15:27  陆羽扬  阅读(1)  评论(0编辑  收藏  举报