启发式合并

把一个复杂度 max(a,b) 变成 min(a,b)

具体用于合并,把小的合并到大的里

春节十二响

先想链的部分:把左右两个集合排序,取最大值

树的也一样:给每个点开一个堆,每次将 siz 小的合并到 siz 大的堆中

名曰启发式合并

天天爱跑步

把路径拆成两段,算出有贡献的 deep 的要求

放进桶里,因为有贡献的点只能在他的子树里,所以要删除贡献,用 dsu on tree / 树上差分

梦幻布丁

直接暴力修改,最坏一次是 O(n)

发现把 x 改成 y 和把 y 改成 x 没什么区别,就额外开个数组记这些下表对应的颜色就行了

所以可以选 x y 中点少的合并

复杂度的话,启发式合并都是一样,考虑每个数被合并的次数,每次合并区间大小都至少会翻一倍,所以每个数被合并的次数是 logn

树上众数

板子

众数拿个桶做就行,诺宇 本蒟蒻本来在想怎么记轻儿子的桶,但 dsu on tree 告诉我们就对整颗树直接再做一遍就行

话说博客算文章吗,如果算的话就可以用笔名了

连通性询问

并查集的启发式合并不用多说了,这题要记时间,所以我们每次合并的时候就在并查集的元素里记一下时间,这时就不能用路径压缩了

树上DK路径

就差一点点,不嘻嘻

首先看到这个鬼畜的 22 ,就想到状压,统计路径上字母的个数 % 2,因为是全偶或一奇

看到 01 就该想想位运算,而且还是路径,dis[x] 求出 1 到 x 的路径状态,那么 x 到 y 的就是 dis[x]^dis[y]

所以就是固定 x 找 y,把 y 扔桶里,加上 dsu on tree 就是 O(nlogn)

posted @   小惰惰  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
/* 鼠标点击求赞文字特效 */
点击右上角即可分享
微信分享提示