CF1559D1&D2 Mocha and Diana

原题(Eazy Version)

原题(Hard Version)

翻译

首先我们先考虑Eazy Version。容易发现,在A,B两个森林中一定有一个是一棵树。这个结论说明:

  1. 选边顺序没影响

  2. 能选就选

因此我们枚举n2条边,用并查集判断连通性即可

最终复杂度O(n2α(n))O(n2logn)


然后我们考虑Hard Version怎么做。我们发现上面的做法我们多判断了很多条边。例如我们连接了(x,y),则我们还会继续判断(x,z),其中zx在同一个连通块里。这是很不优的。因此我们考虑优化

首先我们先枚举连接所有能连接的边(1,u),此时点分成了三类:

  1. 1A图中和u联通,在B图中和u联通

  2. 1A图中和u联通,在B图中和u不联通

  3. 1A图中和u不联通,在B图中和u联通

我们把第二类节点和第三类节点所在的连通块里的任意一个节点分别划分在集合LR中,容易发现LR=,并且在LR内的所有节点都是可匹配的。因为如果在L中有xRy不匹配,则说明在A图或B图中x,y在同一连通块内,因此x,y应该在同一集合中,假设不成立。

因此我们接下来的策略就是直接让LR两两配对即可

最终复杂度O(nα(n))O(nlogn)

posted @   FOX_konata  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示