题解:P8999 [CEOI2022] Drawing
第一次见到只能用链分治做的题。
但是这题没有 spj 啊???
我们看到这题是构造+计算几何,感觉非常毒瘤。
首先观测到保证一定有解,让我们思考一下为什么一定有解。
如果在这里你就考虑到二叉树的性质,你就要寄了,因为这整题可以都不用到这个性质。
我们想随便选个点做根和根的对应点,然后极角排序,按极角序划分子树,可以保证两个子树的两边不会交。
精细实现可以做到
然后我们发现这不是直接上点分治吗,但其实不是,因为我们发现上面的构造中子树的根不能乱选,不然 根-子树根 这条边可能会寄,必须选择例如极角序第一个点。
我们可以考虑链分治。
为什么呢,首先链分治是一个自上而下的过程,其次每个重链都只需要考虑链顶的父亲节点的影响,并且复杂度是对的。
我们考虑每个重链,根据套路,链分治对于重链也要分治。
设重链为
先分配
设
但是问题是如何保证
我们可以发现只有如下的限制,设
我们再后面的点中选取
于是就做完了。
但是二叉树呢?????
我们可以将中点改成带权中点,一通乱证可以得到时间复杂度少了一个