2.24 炫酷支配点对

我发现我有了“我不想让人看到我所学的东西”的想法。但是我觉得如果藏藏匿匿的对我保持一个平常的,只专注于现在与自己的心态没有任何帮助,反而会增长我的焦虑。

其实我也不知道这个 trick 叫什么名字。但是支配点对听起来真的很酷,于是就称为支配点对吧,

对于树上编号区间的题目,可以考虑使用“支配点对解决问题”。

具体而言,就是对于每个 \(i\) 找到满足某些限制的编号前驱/后继 \(j\),那么被询问区间 \([l,r]\) 包含的这些支配点对就会对问询产生完备的贡献。

一个比较有用的额外技巧,就是考虑支配点对的有向/无向性。在像 Ynoi y-fast trie 中,只保留双向的支配点对即可求出答案,并且容易直接维护。然后在一些树上问题中,手动去增加一个单向的限制能够有比较好的效果。

今天日志中的两道问题都与树上距离有关。处理树上距离有关问题的时候可以考虑以深度作为决定单向性的一个方向。

QOJ5148 Tree Distance

每次询问编号区间内任意两点最小距离。

考虑点分树上求支配点对。具体而言,对于分治中心 \(r\),子树内 \(x,y\) 的距离即 \(d_x+d_y\)\(d\) 为到分治中心的距离。

考虑如下设计的一个支配点对:对于 \(i\),找到分治子树内 \(d_j<d_i\) 的前驱后继。这 \(O(n\log n)\) 个支配点对一定是完备的。

因为假如存在更远的非前驱后继的 \(k\),那么如果我们要选 \((i,k)\),那么我们发现我们不如直接选择 \((j,k)\),因为 \((j,k)\) 完全被 \((i,k)\) 包含。

LG7126 rdCcot

每次询问区间内的点提取出来后,树上距离 \(\le C\) 的连边,形成的连通块数。

仍然考虑求支配点对。我一开始以为直接求 \(\le C\) 的支配点对就行了,但是实际上很不行。一来没啥好用的性质,而最大的问题就是它根本就是错的。

这种情况下仍然考虑定向。并且我们还是按照深度定向。对于 \(i\) 找到与其距离 \(\le C\) 且深度小于其(深度相同则比较标号)的前驱后继。

这样的好处是不会成环。既然不会成环那么就意味着不会遇到两个连通块本来应该有连边但是却没被统计,并且这一系列支配点对是完备的。

于是答案也好统计了。我们只需要统计没有合法出边的(即在 \([l,r]\) 的出边)的点的个数即可。这就是一个朴素数点问题了。

posted @ 2024-03-26 08:30  LarsWerner  阅读(28)  评论(0编辑  收藏  举报