当前位置: 首页 > news >正文

倍增并查集

更新日志 2025/11/24:开工。

概念

类似于两个区间内,各个位置一一对应连边的问题,就可以考虑使用倍增并查集解决。比如说,QOJ9904。

思路

以例题为例,转化后就是相当于给一个区间每对左起第 \(i\) 个和右起第 \(i\) 个连边。我们令 \(a(x,t)\) 表示 \(x\) 处往右 \(2^t\) 的区间,令 \(a(x+n,t)\) 表示 \(x\) 处往左 \(2^t\) 的区间。初始时,在并查集上合并所有 \(a(x,0)\)\(a(x+n,0)\)

考虑两个区间一一连边,我们将原区间拆成 \(\log\) 个整次区间,然后对每个整次区间连边。

假如我们当前要给 \([l,l+2^t-1]\)\([r-2^t+1,r]\) 连边:

  • \(a(l,t)\)\(a(r+n,t)\) 已连通,那么直接返回即可。
  • 否则,先连接 \(a(l,t)\)\(a(r+n,t)\),然后递归处理 \((l,r,t-1)\)\((l+2^{t-1},r-2^{t-1},t-1)\)
  • 特殊地,若 \(t=0\) 且尚未连通,那么就是说这里要连一条边了,连接后直接返回即可。

这样一共 \(\log\) 层,每层 \(O(n)\) 个节点,复杂度为 \(O(n\log n)\)

例题

QOJ9904,从小到大枚举 \(a_i\),然后不难得到对应连边区间,我们想要知道当前区间内要连多少条边,倍增并查集即可,每次返回 \(t=0\) 且尚未连通的个数。

code
const int N=4e5+5,T=19;int n;
ll a[N];int fa[N*T];
int find(int x){if(fa[x]!=x)fa[x]=find(fa[x]);return fa[x];}
void merge(int a,int b){fa[find(a)]=find(b);}
bool same(int a,int b){return find(a)==find(b);}
int id[N][T],idx,per[N];
ll ans;int Merge(int l,int r,int t){if(same(id[l][t],id[r+n][t]))return 0;merge(id[l][t],id[r+n][t]);if(!t)return 1;return Merge(l,r,t-1)+Merge(l+(1<<t-1),r-(1<<t-1),t-1);
}inline void Main(){cin>>n;rep(i,3,2*n-1)cin>>a[i],per[i-2]=i;repl(t,0,T)rep(i,1,n<<1)id[i][t]=++idx,fa[idx]=idx;rep(i,1,n)merge(id[i][0],id[i+n][0]);sort(per+1,per+2*n-2,[&](int x,int y){return a[x]<a[y];});rep(I,1,2*n-3){int i=per[I];int l=max(1,i-n),r=min(n,i-1);per(t,T-1,0)if(l+(1<<t)-1<r-(1<<t)+1)ans+=a[i]*Merge(l,r,t),l+=1<<t,r-=1<<t;}put(ans);
}
http://www.jsqmd.com/news/48929/

相关文章:

  • ASP.NET Core Web API 为 Swagger 创建多个分组文档
  • 2025年开式冷却塔生产厂家权威推荐榜单:闭式冷却塔/大型冷却塔/空冷器源头厂家精选
  • Java中数组常见操作
  • 2025年树脂拉链制造企业权威推荐榜单:尼龙拉链/金属拉链/隐形拉链源头厂家精选
  • 小企业OKR实施的组织变革与本土化路径
  • 二、使用Spring AI实现简单聊天功能(实现角色预设、流式和非流式响应)
  • 安装一个为RK3588S优化的、启用了OpenCL (GPU加速) 和 NEON (CPU加速) 的OpenCV 4.10版本。
  • 网页版RStudio跑Harmony总报错?可能是这个原因导致的
  • 递归算法如何分析复杂度?
  • 常用的文件摆渡系统:让数据安全高效跨越网络界限
  • 2025苏州最好的留学机构是哪家公司
  • 2025深圳英国留学中介有哪些机构
  • 2025南昌留学机构哪家好
  • 2025广州哪里有好的留学机构
  • 2025年托盘式不锈钢电缆桥架源头厂家权威推荐榜单:不锈钢电缆桥架/节能型桥架/聚氨酯管箱源头厂家精选
  • 2025北京正规出国留学机构排名
  • FTP传输工具推荐:2025年政企首选的国产文件传输解决方案
  • labview密码破解
  • 2025 拍立得电池怎么选?按场景选对不浪费!四大核心场景 + 十大品牌推荐,适配多机型
  • 2025年江苏saas小程序制作平台权威推荐榜单:江苏电商小程序定制服务/江苏小程序制作公司/江苏电商小程序服务商平台精选
  • 数据库索引重组与重建 - ufo233
  • 【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典 - 实践
  • 2025年GEO公司综合实力排行榜:上饶大牛数据服务有限公司领跑行业
  • 本年口碑好的GEO品牌推荐
  • P1024 一三元次方程
  • springboot学习之注解(2)
  • 2025配置管理平台选型:如何破解CMDB建设痛点,从需求匹配到产品选型的实战指南
  • 2025欧洲留学机构十强有哪些
  • 2025南昌哪个留学中介信誉好
  • 2025广州哪家留学机构比较好一点