左偏树
具体见OI-wiki,但是OI-wiki对左偏树的“外节点”的定义好像错了,其实应该就是指空节点;删除任意一个数的那个部分就不用看了,没啥用
设
证明:
显然
假设当
也就是说至少有
那么对于这道题目,我们还需要用并查集去维护左偏树。具体来说,每个左偏树都对应一个并查集,而且左偏树的根节点就是并查集的代表元素。于是前面三个操作都很容易解决了,但是第四个操作看起来要对并查集进行分离。实际上不用,这里解锁一个新操作,即并查集的换根操作。删除左偏树的根节点后,我们在并查集中不删除代表元素;合并左儿子和右儿子之后,新的左偏树的根作为并查集的代表元素,此时只需要将原来的根节点的父亲指向新的根节点,新的根节点的父亲指向自己就好了。易知这样做不会影响答案
具体见打卡代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2023-08-18 阶乘分解