cdcq

梦幻小鱼干

导航

【CCPC2020网络赛02】Graph Theory Class

原题:

题意:

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

 

为方便讨论,现在给所有结点的标号都+1,于是标号范围变为2~n+1,结点i和j之间的边权变为lcm(i,j)

性质1:

lcm(i,j)>=i且lcm(i,j)>=j

先考虑一个特殊情况,如果i是质数

此时情况有2种,要么i|j,那么lcm(i,j)=j,否则lcm(i,j)=i*j

显然i*j也是i的倍数,因此只需要让i和一个最小的数连就行了,最小就是2

一般情况,如果i是合数,那么由于lcm(i,j)>=i,因此反正怎么选都不可能小于i,直接让i跟一个因子连就行了

这样怎么能保证连出来是一个树呢

性质2,一种构造树的方法:

让每个结点i都跟标号小于i的某点连边,这样可以归纳地证明连出来是一个树

2肯定比除了2的质数小,合数的因子肯定比它自己小,因此上面的连法保证得到一个树

于是对于质数,和2连边,lcm=2*i,对于合数,和一个因子连,lcm=i

最后的总边权等于(2+n+1)*n/2+∑p-2-2,∑p是小于n+1的所有质数的和,-2-2是因为2不会和自己连

用min25筛出质数和即可

求质数和我还不会,问了队友(清欢)直接就知道可做,然后写完就A了盒盒

 

没有代码

posted on 2020-09-20 17:15  cdcq  阅读(1593)  评论(0编辑  收藏  举报