zoukankan      html  css  js  c++  java
  • 【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了盒盒

    没有代码

  • 相关阅读:
    centos7使用supermin制作centos7的docker镜像包
    Linux ip netns 命令
    ip命令讲解
    openstack API应用用
    在EF6.0中打印数据库操作日志
    EF记录统一添加创建,修改时间
    Inner Join and Left Join 与条件的结合
    字符串分割
    居中方案
    移动 前端 框架
  • 原文地址:https://www.cnblogs.com/cdcq/p/13701051.html
Copyright © 2011-2022 走看看