启发式合并
把一个复杂度
具体用于合并,把小的合并到大的里
先想链的部分:把左右两个集合排序,取最大值
树的也一样:给每个点开一个堆,每次将 siz 小的合并到 siz 大的堆中
名曰启发式合并
把路径拆成两段,算出有贡献的
放进桶里,因为有贡献的点只能在他的子树里,所以要删除贡献,用 dsu on tree / 树上差分
直接暴力修改,最坏一次是
发现把
所以可以选
复杂度的话,启发式合并都是一样,考虑每个数被合并的次数,每次合并区间大小都至少会翻一倍,所以每个数被合并的次数是
板子
众数拿个桶做就行,诺宇 本蒟蒻本来在想怎么记轻儿子的桶,但 dsu on tree 告诉我们就对整颗树直接再做一遍就行
话说博客算文章吗,如果算的话就可以用笔名了
并查集的启发式合并不用多说了,这题要记时间,所以我们每次合并的时候就在并查集的元素里记一下时间,这时就不能用路径压缩了
就差一点点,不嘻嘻
首先看到这个鬼畜的 22 ,就想到状压,统计路径上字母的个数 % 2,因为是全偶或一奇
看到 01 就该想想位运算,而且还是路径,dis[x] 求出 1 到 x 的路径状态,那么 x 到 y 的就是 dis[x]^dis[y]
所以就是固定 x 找 y,把 y 扔桶里,加上 dsu on tree 就是
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】