当前位置: 代码迷 >> 综合 >> 【2020CCPC网络赛】1002 Graph Theory Class(HDU6889)
  详细解决方案

【2020CCPC网络赛】1002 Graph Theory Class(HDU6889)

热度:6   发布时间:2024-02-21 00:41:35.0

题目链接

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

思路:为了方便起见,我们将节点从2~n+1编号,可以知道,当新加入的节点是个质数时,最小生成树的权值之和增加的是两倍的质数值,因为把这个点和2连起来是加的值最小的,当新加入节点的值不是质数时,权值之和增加的是这个数的值,因为前面一定会存在一个数是这个数的因子,只要把这个数和它的因子连起来,增加的值就只是这个数本身的值了。

我们可以把所有质数提一个出来,则增加的数是以3为首项,公差为1的等差数列。用等差数列求和公式,O(1)的时间求出来这个等差数列前n项和。再用min25筛,O( n**(3/4) / logn)的时间求出质数的前n项和,两项相加即可得出结果。

代码日后再补,min25筛实在是不会,还在研究中

  相关解决方案