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

26 LCA模拟赛3T2 连边 题解

连边

题面

给定一张初始 \(n\) 个点,没有边的图。

给定 \(m\) 表示有 \(m\) 个时刻,第 \(i\) 个时刻会将 \(gcd(a,b) = m - i + 1\) 某些点连起来。

\(q\) 个询问,每次询问给定 \(x, y\),你需要回答 \(x, y\) 最早在什么时刻连通

\(1 \le n,q \le 10^5, 1 \le m \le n\)

题解

这个暴力思路就是直接模拟。

考虑优化,我们可以对原来加的边进行一个等价变形:每个时刻将 \(i\)\(i\) 的倍数连边,边权为 \(i\) ,连通性是一样的。

这样,边数最多只有 \(O(n \log n)\)

我们对这些边按照边权从小到大加入到图中,用并查集维护连通性,从而构造出一棵最小生成树。

然后直接倍增查询路径最大边权即为答案。

时间复杂度 \(O(n \log n)\)

code

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <map>
#include <set>using namespace std;namespace michaele {const int N = 1e5 + 10, M = N << 1;int n, m, q;int h[N], ver[M], ne[M], e[M], tot;int anc[N], f[N][23], g[N][23], dep[N];void add (int x, int y, int z) {ver[ ++ tot] = y;ne[tot] = h[x];h[x] = tot;e[tot] = z;}int fin (int x) {return x == anc[x] ? x : anc[x] = fin (anc[x]);}void dfs (int x, int fa) {for (int i = h[x]; i; i = ne[i]) {int y = ver[i];if (y == fa) continue;f[y][0] = x;g[y][0] = e[i];dep[y] = dep[x] + 1;dfs (y, x);}}int query (int x, int y) {if (dep[x] < dep[y]) swap (x, y);int res = 1;for (int i = 20; i >= 0; i --) {if (dep[f[x][i]] >= dep[y]) {res = max (res, g[x][i]);x = f[x][i];}}if (x == y) return res;for (int i = 20; i >= 0; i --) {if (f[x][i] != f[y][i]) {res = max ({res, g[x][i], g[y][i]});x = f[x][i];y = f[y][i];}}res = max ({res, g[x][0], g[y][0]});return res;}void solve () {cin >> n >> m >> q;for (int i = 1; i <= n; i ++) anc[i] = i;for (int i = 1; i <= m; i ++) {int k = m - i + 1;for (int j = k * 2; j <= n; j += k) {int x = fin (k), y = fin (j);if (x != y) {anc[x] = y;add (k, j, i);add (j, k, i);}}}dep[1] = 1;dfs (1, 0);for (int j = 1; j <= 19; j ++) {for (int i = 1; i <= n; i ++) {if (!f[i][j - 1]) continue;f[i][j] = f[f[i][j - 1]][j - 1];g[i][j] = max (g[i][j - 1], g[f[i][j - 1]][j - 1]);}}for (int i = 1; i <= q; i ++) {int x, y;cin >> x >> y;if (x == y) {cout << 0 << endl;continue;}cout << query (x, y) << endl;}}
}int main () {ios :: sync_with_stdio (0);cin.tie (0);cout.tie (0);michaele :: solve ();return 0;
}
http://www.hskmm.com/?act=detail&tid=32353

相关文章:

  • 28 S2模拟赛T2 开会council 题解
  • 25 LCA模拟赛3T1 ROI 2012马赛克 题解
  • 实验记录2025/10/14
  • 个人微信开发框架
  • 投资指标技术分析
  • linux源码编译python
  • uni-app x开发商城系统,Swiper 轮播图
  • 昂瑞微OM6651A:国产车规级蓝牙芯片的破局者
  • 2025年中央空调/锅炉房/机房运维服务厂家最新权威推荐榜:专业托管与维修外包一体化解决方案精选
  • 【终极解决方案】api-ms-win-core-path-l1-1-0.dll 缺失?Win7/Win10/Win11完整修复教程
  • 2025 年最新推荐分切机实力厂家权威榜单:覆盖全自动高速、铝箔、薄膜、高精度等机型,为软包装企业精选优质设备
  • 打破应用跳转流失困局,提升推广链接转化率
  • 性能测试进阶秘籍:如何用JMeter分布式压测挖掘系统极限潜
  • Codeforces Round 1058 (Div. 2) A~E
  • 2025 年生料带厂家最新推荐排行榜:解析优质品牌优势,涵盖新型、彩色、液态等多类型生料带厂家企业推荐
  • openresty开发lua-resty-openssl之对称加密解密 - liuxm
  • 哈希乱搞:CF1418G Three Occurrences
  • 2025 年废旧轮胎裂解加热生产厂家最新推荐榜单:优质企业专利技术、产能规模与口碑实力全景解析锂化工焚烧炉/氟化热风系统/煤化工热风炉厂家推荐
  • 悲伤 自卑 乖戾 独自哭泣 陪伴空虚 kill my memory 让我将痛苦全忘记
  • 日志 | 2025.10
  • 工程师的 “指尖实验室”!正点原子 LT1 电桥镊子深度测评:同价位竞品谁能打?
  • 【ACM出版|EI检索稳定】2025年AI驱动下:业务转型和数据科学创新国际学术会议(ICBTDS 2025)
  • 破解跨域监控难题:国标GB28181算法算力平台EasyGBS视频调阅技术在跨域安防监控中的核心应用
  • 2025 年电缆桥架源头厂家最新推荐排行榜:聚焦优质供应商核心竞争力,助力工程采购精准选型
  • 2025 年厂房出售公司服务推荐排行榜:珠三角/广州/深圳/东莞/佛山/珠海等城市优质厂房出售公司全面测评解析
  • 构建智能视觉中枢:国标GB28181算法算力平台EasyGBS的全域感知与播放方案
  • 别再乱排查了!Kafka 消息积压、重复、丢失,根源基本都是 Rebalance!
  • 2025年交通杯-爆破题wp
  • 挖象浏览器下载安装教程|支持淘宝、拼多多、抖音多平台账号分区管理
  • 2025 年国内活性炭回收交易公司最新推荐排行榜:实力厂商深度解析,助力企业精准选合作方回收果壳活性炭/回收煤质柱状活性炭/库存各种活性炭公司推荐