Warning: session_start(): open(/tmp/sess_5097a3029f1f6bb6c0ce3b45b2aeb894, 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
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103 2020-2021:teams:farmer_john:week_18
题意:给你一棵$n$个节点的树,保证$n$为偶数,边权为$1$,问是否存在一个完美匹配,使得两两点之间距离之和恰好等于$k$。$(n \le 10^5, k \le n^2)$
题解:我们考虑一条边,它将整棵树分为两棵子树,大小分别为$x$和$n-x$,两者奇偶性相同。所有两点位于两侧的匹配都会经过这条边,而其它匹配一定是在各自子树内完成的,因此这条边被经过的次数的奇偶性一定和$x$相同,同时也有一个显然的上界$\min(x,n-x)$,设该边贡献的权值为$a$,则有$(x \mod 2 )\le a \le \min(x, n - x)$。
我们以树的重心为根,那么除了根节点外,以每个节点为根的子树都小于另一部分,即$\min(x,n-x)=x$,因此对于每一条边我们可以得到公式$\sum (siz_i\mod 2) \le k \le \sum siz_i$,且$k$的奇偶性和$\sum siz_i$相同。下面通过构造证明这个必要条件也是充分的。