4 条题解

  • 2
    @ 2024-8-11 8:32:32

    注意到,将所有 dis\operatorname{dis}kk 的信息异或起来可以得到所有深度为 kk 的结点的权值的异或和 (2kh)(2 \le k \le h),因为在满二叉树中,对于某个满足 depu=kdep_u=k 的结点 uu,满足 dis(u,v)=k\operatorname{dis}(u,v)=k 的结点 vv 的数量为奇数,而对于某个满足 depukdep_u\ne k 的结点 uu,满足 dis(u,v)=k\operatorname{dis}(u,v)=k 的结点 vv 的数量为偶数。证明显然。

    于是我们可以得到,对于所有满足 2kh2\le k \le h 的整数 kk,深度为 kk 的结点的权值的异或和,这恰恰是根结点的信息。枚举一下,找到恰好能匹配上的点即为满足条件的根结点。

    再求根结点的权值。我们可以先求出所有点的权值的异或和,再异或上根结点的所有信息,得到根结点的权值。

    再次注意到,如果两个点的距离为奇数,那么将两个点中所有满足 dis\operatorname{dis} 为奇数的信息异或起来就能得到所有点的权值的异或和。如果两个点的距离为偶数,则异或起来会得到 00

    那我们任选一个点,枚举剩下的点,按照上述方法求出异或和。注意如果得到的全是 00,那么其实所有点的权值的异或和就是 00

    于是我们就可以求出根节点的编号和根结点的权值了。

    信息

    ID
    31
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    243
    已通过
    18
    上传者