Link
被POI的智商题虐惨了,写几道数据结构颐养身心
Solution
就是普普通通的一个套了二分的点分治。 然而大部分人的做法都被hack了。 考虑一道最典型的点分治:楼教主男人八题Tree 我写的做法是在每层点分治,对每个子树双指针+归并。 极端情况:一个点,一个子树有个点,剩下的是个一个点的子树。而且,链上点的权值都比剩下的一堆点小。那么归并的总复杂度就是。所以,这种依赖于线性扫描的点分治,一定要先把子节点按照大小/深度排序。
Code
1 |
|
被POI的智商题虐惨了,写几道数据结构颐养身心
就是普普通通的一个套了二分的点分治。 然而大部分人的做法都被hack了。 考虑一道最典型的点分治:楼教主男人八题Tree 我写的做法是在每层点分治,对每个子树双指针+归并。 极端情况:一个点,一个子树有2n个点,剩下的是2n−1个一个点的子树。而且,链上点的权值都比剩下的一堆点小。那么归并的总复杂度就是O(4n2)。所以,这种依赖于线性扫描的点分治,一定要先把子节点按照大小/深度排序。
1 | #include "lucida" |