1 条题解

  • 0
    @ 2024-6-4 16:10:54

    找一下排列里的置换环。kk 步容易转换成 11 步,用点 gcd\gcd 啥的推一推。这样就变成 k=1k=1 了。

    考虑两个点连边会导致两个置换环之间连边,不妨设两个环大小为 a,ba,b,且 aba\le b。将两个环一号点连起来,看看后面如何循环连边,找找规律手玩两下发现能连边当且仅当 aba|b,且方案数为 aa。这样可以把环当点来数树。

    发现如果有自环点的话已经连成树了。但是如果没有的话还需要一个环和自己连一下把森林变成树。发现只有 len=2len=2 能成功,方案数为这种环的个数。

    考虑对环形成的树计数。先不考虑一个大小的环有多种,那它往环长更小的环连边是独立的,方案数很好算,枚举因数即可(此处改成枚举倍数,显然复杂度 O(ni)=O(nlogn)O(\sum \frac ni)=O(n\log n))。但是如果一个大小的环有多种,那这里需要考虑到同大小环之间可以连边。这时候我们发现往环长更小的环连边的总方案数是一定的,可以临时考虑成一个虚点 00 表示往环长更小的环连边的方案。然后变成虚点和这些环要连成一棵树,方案数为 adeg0×bmdeg0a^{deg_0}\times b^{m-deg_0}。这时候我们拿出 prufer 序列,枚举 deg0deg_0,求出树的个数和总方案数,再累加。

    复杂度调和级数。

    • 1

    信息

    ID
    943
    时间
    2000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    23
    已通过
    3
    上传者