2021 CCPC威海 I. Distance (min25筛)

题目链接
题意是给出n的哈斯图,求 ∑ i ∑ j d i s ( i , j ) \sum_i\sum_j dis(i,j) ijdis(i,j) d i s ( i , j ) dis(i,j) dis(i,j)表示 i i i j j j的最短路径长度。(哈斯图为,如果 x ∣ y x|y xy则有一条 y − x y-x yx的边,权值为 y / x y/x y/x

解题思路:
官方题解的做法非常的简约和优雅,这里记录一下推了很久常数又大的纯min25筛做法。。
我们让 f ( i ) f(i) f(i)表示 i i i的所有 质因数 ∗ * 指数 的和。
例如 f ( 12 ) = 2 ∗ 2 + 3 , f ( 48 ) = 2 ∗ 4 + 3 f(12) = 2*2+3, f(48) = 2*4+3 f(12)=22+3,f(48)=24+3
显然 f ( i ) f(i) f(i)表示 i i i到1的最短距离
那么有
a n s = ∑ i = 1 n ∑ j = 1 n f ( i / g c d ( i , j ) ) + f ( j / g c d ( i , j ) ) ans = \sum_{i=1}^{n}\sum_{j=1}^{n}f(i/gcd(i,j))+f(j/gcd(i,j)) ans=i=1nj=1nf(i/gcd(i,j))+f(j/gcd(i,j))
也就是说, i i i j j j的最短距离 = i i i g c d gcd gcd的最短距离+ g c d gcd gcd到j的最短距离

f f f的定义有
f ( i / g c d ) = f ( i ) − f ( g c d ) f(i/gcd)=f(i)-f(gcd) f(i/gcd)=f(i)f(gcd)

所以 a n s = ∑ i = 1 n ∑ j = 1 n ( f ( i ) + f ( j ) ) − 2 ∑ i = 1 n ∑ j = 1 n f ( g c d ( i , j ) ) ans = \sum_{i=1}^{n}\sum_{j=1}^{n}(f(i)+f(j))- 2\sum_{i=1}^{n}\sum_{j=1}^{n} f(gcd(i,j)) <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值