原题链接
1 题目
1.1 题目所需求出内容
对于本题,最终要求:一个最小值
1.2 题目背景、允许、禁止与限制
背景:
有 nnn 个城市,一些科学家
允许:
修路工程要持续 mmm 天,第 iii 天将会将所有 (u,v)(u,v)(u,v) 的一对科学家使得 gcd(u,v)=m−i+1gcd(u,v)=m-i+1gcd(u,v)=m−i+1 连接起来
给出若干询问,求当前询问的这对科学家 (a,b)(a,b)(a,b) 第几天才能被连接起来
1.3 题目数据范围与猜测
1≤n,q≤105⟶O((n+q) log n)1 \le n,q \le 10^5\longrightarrow O((n + q)~log~n)1≤n,q≤105⟶O((n+q) log n)
1.4 一句话概括题意
有一张初始只有若干点的图
对于每天将会对所有 gcd(u,v)=m−i+1gcd(u,v)=m-i+1gcd(u,v)=m−i+1 的一对科学家 (u,v)(u,v)(u,v) 之间建一条无向边,边权为 iii
每次询问求 (a,b)(a,b)(a,b) 这对科学家之间路径的边权最大值
2 题目破题推导
2.1 第一步:数学性质
我们知道第 iii 天会修好的路就是 m−i+1m-i+1m−i+1
那么能连接的两端一定保证 gcd(a,b)=m−i+1gcd(a,b)=m-i+1gcd(a,b)=m−i+1,所以每次对于连通的a和b,一定都是 a=m−i+1,b=x(a)a=m-i+1,b=x(a)a=m−i+1,b=x(a)
为什么这样就一定能保证连通?因为任意一对 (a,b)(a,b)(a,b) 使得 gcd(a,b)=m−i+1gcd(a,b)=m-i+1gcd(a,b)=m−i+1 都能通过 a→m−i+1→ba\rightarrow m-i+1\rightarrow ba→m−i+1→b 连通
2.2 第二步:模型转换
因为本质上这是一张完全图(因为任意两条边都一定会有 ≥1\ge1≥1 条边相连——在 i=mi=mi=m 时)
所以选出其中需要的 n−1n-1n−1 条边就可以确保连通
那么把“n−1n-1n−1”条边转化为一棵连通的树
树上求两点之间路径边权最大值就很好奇了
3 模型匹配
通过gcd建边+MST建图+LCA求最大值
4 最终代码(禁止抄袭,仅用于参考)