真他X的是个弟弟。
初中会嘴巴的东西,高中不会了。
写了骗分,被多组数据雷普了,从75到5。
我谔谔,还事书这题罢,,,
这题大概可以用可持久化并查集套可持久化平衡树或权值线段树啥的做一下(逃
然后我们考虑用一种简单的做法……
如果我们最后的并查集树中只有原图中的点的话,那么很多信息会非常难处理,那么是否可以考虑引入边?
在Kruskal的过程中,边被从小到大加入。那么我们给每个边建一个点,用来维护经过这条边才能联通的点的信息。最后我们会得到一棵满二叉树。
这样的好处事有很多的……首先我们可以把信息维护在边上了。这个题要求\(k\)大,所以我们就用可持久化权值线段树吧,然后每个非叶子结点合并信息的时候直接可持久化的线段树合并就行了。
然后还有一个小好处,就是这棵树显然从叶子向上的边点的权值事单调不降的,这样我们可以直接倍增找到一个最往上的符合限制的祖先,用这个祖先的信息就行了。
代码:
1 |
|