做题笔记 #2

因为这个题太有象征意义了,所以来写一篇题解。谔谔

[P5311 Ynoi2011] 成都七中 - 洛谷 (luogu.com.cn).

image-20250317154804328

注意力惊人的你一定会发现:

只保留[l,r]的点,判断两点之间的联通性 = 判断两点之间这条链的 **点号最大值 小于 r ** 和 点号最小值 大于 l

因为不用维护树的形态,可以考虑淀粉质。

对于一个询问点 \(x\),找到一个可以到达的最高的分治中心,统计这一层的答案即可。(待会再说正确性)

找到其它和这个询问中心相连的点,那么他们一定也与 \(x\) 相连。统计这些点的颜色数量即可。

考虑扫描线:

设一个点到该分至中心的路径最大值是 \(l\) ,最小值是 \(r\),那么对于那些 \(L\le l ,r \le R\) 的那些询问 \(L,R\) 来说,就需要统计这个点的颜色。用lxl反演的方式表达出来是对一个 2-side 的矩形添加一种颜色。然后询问就是询问单点的颜色种数。

同一种颜色,会构成一些 2-side 矩形,直接根据套路拆分成很多个矩形加。查询就单点查。离线扫描线套一个 BIT 即可解决。


正确性(感觉这样理解略显奇怪,但还有点道理?):

因为询问点与分治中心1不联通,所以肯定不能再分治中心1统计答案。然后发现和分治中心2相连,这时候统计的是除开分治中心1及其下方的点的答案。我们单知道分治中心1及其下方的点不行,其他的点都有可能会贡献答案,所以应该在分治中心2统计答案。

如果再分治中心3统计答案,那么分治中心2以上的点就统计不到答案了,但是它们是有可能会有贡献的。

综上,我们因该在分治中心2统计答案。实现为:对于一个询问点 \(x\),找到一个可以到达的最高的分治中心,统计这一层的答案即可。

image-20250317160837869

posted @ 2025-03-25 19:09  花子の水晶植轮daisuki  阅读(40)  评论(0)    收藏  举报
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js