1 条题解

  • 0
    @ 2025-11-19 18:11:40

    题目分析

    NN 个选手的单循环比赛(竞赛图),要求构造一个竞赛图使得恰好有 MM 个三元环。

    关键公式

    竞赛图中三元环数量的公式为:

    三元环数=(3N)−∑i=1N( 2d − (i)) 如果是三元环:入度序列是 (1,1,1)(1,1,1),那么 (d2)=0+0+0=0\sum \binom{d^-}{2} = 0+0+0=0,三元环数=1 如果是非三元环(传递的):比如 1→2→3→1 不成立,传递的是 1→2, 1→3, 2→3,入度序列是 (0,1,2)(0,1,2)(d2)=0+0+1=1\sum \binom{d^-}{2} = 0+0+1=1,三元环数=0 所以入度序列 (0,1,2)(0,1,2)S=1S=1,三元环数=0;入度序列 (1,1,1)(1,1,1)S=0S=0,三元环数=1。

    因此 SS 可以取不同值。

    其中 d(i)d^-(i) 是顶点 ii 的入度。

    构造思路

    竞赛图的入度序列是 0,1,,N10,1,\dots,N-1 的一个排列。通过调整入度序列可以改变三元环数量:

    最小三元环数:00(传递竞赛图)

    最大三元环数:N34N24\lfloor \frac{N^3-4N}{24} \rfloor(当 NN 为奇数时)

    构造方法

    检查可行性:MM 必须在 [0,Mmax][0, M_{\max}] 范围内

    从传递竞赛图开始:选手 ii 打败所有 j<ij < i

    调整边方向:通过反转某些边来增加三元环数

    输出结果:用邻接矩阵形式输出

    算法实现

    对于 N5000N \leq 5000,需要 O(N2)O(N^2) 的构造方法。可以通过分块调整来精确控制三元环数量。

    • 1

    信息

    ID
    5510
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    8
    已通过
    1
    上传者