做题笔记 #2
因为这个题太有象征意义了,所以来写一篇题解。谔谔
[P5311 Ynoi2011] 成都七中 - 洛谷 (luogu.com.cn).
注意力惊人的你一定会发现:
只保留[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\),找到一个可以到达的最高的分治中心,统计这一层的答案即可。

                
            
        
浙公网安备 33010602011771号