Warning: session_start(): open(/tmp/sess_1c0b0451e20651c8635b3bd1b0f0636d, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/4/43994124a9168f34c03db2ff7cd35d94.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:i_dont_know_png:multi2020-nowcoder-5 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:i_dont_know_png:multi2020-nowcoder-5

2020牛客暑期多校训练营(第五场)

B - Graph

Solved by nikkukun.

题目描述

给一个非负权的树,你可以任意加边或删边,但任意时刻要保证:

  1. 连通
  2. 任意环异或和为 $0$

求操作过后整棵树的最小权。

解题思路

不难发现将边权往小修改的操作其实很像最小生成树的过程(接一个环,去掉环上的最大边),又发现这个图实际上一直是一棵生成树,其边权 $(u, v)$ 是原图中 $u \to v$ 的路径异或和,因此只要求这个图的 MST 即可。显然,令 $d(u)$ 为 $u$ 到根的路径异或和,则 $d(u) \oplus d(v)$ 就是 $u \to v$ 的路径异或和。

剩下的就是 老原题 了。考虑 Kruskal 过程从小到大连边:将所有 $d(i)$ 插入 trie 中,先给子树建好 MST,再往上合并两子树的 MST。合并的过程是要找两个子树中异或的最小值,这个可以暴力在两个子树中递归。由于每个节点只会被暴力搜到 $O(\log V)$ 次,因此总复杂度是正确的。如果不放心,也可以启发式合并维护一个子树的值,用另一个子树去查询最小值。

E - Bogo Sort

Solved by Potassium.

水题不表。

I - Hard Math Problem

Solved by nikkukun.

水题不表。

2020-2021/teams/i_dont_know_png/multi2020-nowcoder-5.1595701301.txt.gz · 最后更改: 2020/07/26 02:21 由 nikkukun