2020CCPC网络赛 Graph Theory Class (min_25素数筛 数论)

2020CCPC网络赛 Graph Theory Class (min_25素数筛 数论)题目http://acm.hdu.edu.cn/showproblem.php?pid=6889题意给你一个n个结点的完全图,结点从2~n+1标号,结点i和j之间的边权为lcm(i,j),问你这个图的最小生成树的边权和是多少题解对于一个合数,我们一定能找到它的因子,那么这个点和他的因子节点相连,那么权值就是合数本身。对于一个质数,它和所有数的lcm最小值必然是和2相连得到的最小值,所以这个权值就是2*质数
摘要由CSDN通过智能技术生成

2020CCPC网络赛 Graph Theory Class (min_25素数筛 数论)

题目

http://acm.hdu.edu.cn/showproblem.php?pid=6889

题意

给你一个n个结点的完全图,结点从2~n+1标号,结点i和j之间的边权为lcm(i,j),问你这个图的最小生成树的边权和是多少

题解

对于一个合数,我们一定能找到它的因子,那么这个点和他的因子节点相连,那么权值就是合数本身。
对于一个质数,它和所有数的lcm最小值必然是和2相连得到的最小值,所以这个权值就是2*质数。
那么这个问题就可以转化为求2~n+1的合再加上所有质数的和,数字范围1e9。这里需要用到min_25素数筛。

Min25筛

使用条件

首先要弄清楚Min25筛具体用在什么地方,有什么使用条件。一般来说,它可以求大部分的积性函数的和,即形如:
∑ i = 1 n F ( i ) \large\sum_{i=1}^nF(i) i=1nF(i)
要求的条件是F(x),x ∈ \in Prime要能够用多项式表示,而且F(xk),x ∈ \in Prime要能够快速计算。

大致思想

Min25筛的大致思想,就是把这个结果分为两个部分(准确来说是三个部分),一个是i为质数的和,一个是i为合数的和,再加上i为1的函数值。那么,我们首先看如果求这个 i i i为质数部分的和 a n s 1 ans1 ans1。我们不妨设:

g ( n , j ) = ∑ i = 1 n F ( i ) [ i ∈ P   o r   m i n ( p ) > P j , p ∣ i , p ∈ P   ] \large g(n,j)=\sum_{i=1}^nF(i)[i\in P\ or \ min(p)>P_j,p|i,p\in P\ ] g(n,j)=i=1nF(i)[iP or min(p)>Pj,pi,pP ]

g ( n , j ) g(n,j) g(n,j)表示 n n n以内所有质数以及最小质因子 > P j >P_j >Pj的合数的 F F F之和。这样,显然有 a n s 1 ans1 ans1等于 g ( n , ∣ P ∣ ) g(n,|P|) g(n,P)

这个东西的实际含义是什么呢?可以参考一下埃氏筛法的运行过程。

假设现在有n个数依次排开,第i个数是 f ( i ) f(i) f(i),根据埃氏筛法的那套理论,每次选出一个质数,然后筛掉它的所有倍数。

会发现 g ( n , j ) g(n,j) g(n,j)就是运行 j j j次埃氏筛法后,没被筛掉的所有数之和加上所有的 f ( p ) f(p) f(p)

我们要求的 a n s 1 = ∑ i = 1 x [ i 是 质 数 ] f ( i ) ans1 = \sum_{i=1}^x[i是质数]f(i) ans1=i=1x[i]f(i)其实就是 g ( x , ∣ P ∣ ) g(x,|P|) g(x,P),其中|P|是质数集合的大小。

那么我们考虑如何去计算这个 g ( n , j ) g(n,j) g(n,j)

我们发现,当 P j 2 > n P_j^2>n Pj2>n时,最小质因子是 P j P_j Pj的最小合数就是 P j 2 P_j^2 Pj2,而 P j 2 > n P_j^2>n Pj2>n,所以此时有:

g ( n , j ) = g ( n , j − 1 ) g(n,j)=g(n,j-1) g(n,j)=g(n,

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值