【题解】P5311 | 点分治 数据结构 数颜色
独立切掉的黑 Ynoi~~
首先无根树上连通块和路径的查询可以考虑点分治,进行点分治,每次统计包含分治中心的连通块。
因为连通性是可以传递的所以如果可以到达目前的分治中心,问题就转化成了以分治中心为根只经过 可以到达的颜色数,看上去就能做很多了。
通过一次 dfs 处理出分治中心到每个点需要经过最大最小编号 ,接下来问题转化为平面上有若干带色点 ,每次数矩形 的颜色数,考虑使用经典套路,把询问看作二维平面上的点,考虑每种颜色可以贡献到的询问,即会对 的询问产生这个颜色的贡献,所以我们需要对这些右上矩形取并,并对这个区域加一,对这个右上的阶梯型加可以拆成轮廓上这些黑点的贡献。
每种颜色的矩形的个位数之和是 的,直接排序后使用一个指针扫出轮廓,然后矩形加单点查即可。
总共要做规模为 的二维数点,时间复杂度 ,点分治的大常数和数据结构的 是分开的,故常数很小。
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970912,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步