摘要: 也是点分治的简单题。(对我来说算难了orz.) 首先这里的难点就在于查询是否存在长度k。 如果我们每次都去对询问进行一次点分治,显然是过于浪费了。 所以我们可以离线做它。 在点分治过程中统计所有答案。 那么怎么统计答案,又是一大难点,如果要直接按之前找k点对的统计。 那么容斥删点的时候,需要找遍所有 阅读全文
posted @ 2020-08-27 14:16 levill 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 点分治的模板题。 总结一下点分治:核心就是关于重心的寻找。 对于一棵无根树,我们随机选择一个点作为根来处理树上路径。 最坏情况下有n层接近O(n)的复杂度,这时显然不太好。 那么我们就寻找到一个点(重心),满足他的最大的子树最小。这样可以最小化最大的递归层。 经过证明(证明略),最大的子树的最小的值 阅读全文
posted @ 2020-08-27 11:58 levill 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 显然第一眼用线段树合并线性基即可。 对于线段树复杂度nlogn。合并logn,插入logn.。 总复杂度在nlogn^3。对于这里的5e5,依旧会超时。 考虑其他的思路:这里用了和某道树上查询的紫题差不多的思路。 我们让线性基尽可能靠右,然后只需要判断是否在区间内即可。 因为预处理出了所有点,那么查 阅读全文
posted @ 2020-08-27 09:24 levill 阅读(128) 评论(0) 推荐(0) 编辑