1 条题解

  • 3
    @ 2026-10-22 19:27:33

    思路

    注意到,我们设

    f(x)=A矩阵第 x 行最终到的位置f(x)=\text{A矩阵第 x 行最终到的位置} g(y)=A矩阵第 y 列最终到的位置g(y)=\text{A矩阵第 y 列最终到的位置}

    有

    Ax,y=Bf(x),g(y)A_{x,y}=B_{f(x),g(y)}

    发现,当固定

    f(t)=1f(t)=1

    可以发现,所有的g(y)g(y) 也固定了

    所以,枚举 tt ,固定 f(t)=1f(t)=1,再枚举 yy,得到所有g(y) g(y) ,如果匹配不上就舍弃这个 tt

    然后,按照 g(y)g(y) 计算 f(x)f(x),直接 O(n2)O(n^2) 即可

    把 ff 和 gg 分别看成 nn 元排列。每个排列可以分解成若干置换环,一个长 kk 的环需要 k−1k-1 次交换归位

    所以显然有:

    • 行交换次数 =n−环数(f)= n - \text{环数}(f)
    • 列交换次数 =n−环数(g)= n - \text{环数}(g)
    • 总次数 =2n−环数(f)−环数(g)= 2n - \text{环数}(f) - \text{环数}(g)

    置换环:从 ii 出发,不断跳 i→f(i)→f(f(i))→…i \to f(i) \to f(f(i)) \to \dots 直到回到起点,走过的点构成一个环。每个环数一次,标记已访问

    • 1

    信息

    ID
    2818
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    (无)
    递交数
    27
    已通过
    9
    上传者