UOJ #751 -【UNR #6】神隐(交互题)
作者:互联网
被杀爆哩 /ll
首先很明显,这个 \(\text{lim}\) 是 \(\log\) 级别的,那么我们考虑对每个二进制位进行询问,即,考虑每个二进制位,问一遍该二进制位为 \(1\) 的那些边,再问一遍该二进制位为偶数的边,这样对于一个点 \(x\) 而言,对于与其距离 \(\ge 2\) 的某个点 \(y\),假设 \(x,y\) 路径上的两条边为 \(e_1,e_2\),那么显然对于 \(e_1\oplus e_2\) 的那些二进制位,\(x,y\) 不论在这一位为 \(1\) 的边集组成的子图中,还是在这一位为 \(0\) 的子图中都不连通,由此判断出树的边集。
考虑优化,注意 \(\dbinom{14}{7}>2000,\dbinom{20}{10}>131072\),因此考虑用 \(20\) 位由 \(10\) 个 \(1\) 组成的二进制数给边集重标号。每次只对这 \(20\) 位中标号为 \(1\) 的边集进行询问,然后检查下两点是否同时在恰好 \(10\) 个子图中位于同一个连通块。
直接做是平方的。考虑优化。发现每一步我们可以知道叶子是什么,我们重复删去叶子直到删空这张图,然后得出每个点距离其最近的叶子离其的距离 \(d_i\)。然后考虑如何判断与一个叶子相连的点,发现就是另外 \(10\) 个子图中连通块的交,从这方面入手难度还是有点大,可以注意到一个性质:它的父亲一定是所有集合中 \(d\) 最大的点中的最小值。然后就没有然后了。
最后一阶段只口胡不写代码。
标签:10,751,20,神隐,边集,叶子,二进制位,UOJ,考虑 来源: https://www.cnblogs.com/ET2006/p/UOJ-751.html