做法一

提供一个后半部分略微不同的做法。

首先,基环旋转同构肯定是用 Burnside 那套理论求不动点来解,设 \(f(n, m)\) 为每种颜色 \(/m\) 构成 \(n\) 棵(树之间有标号)无标号有根有序带颜色树的方案,那么答案为(记 \(G = \gcd(a_1, a_2, \cdots a_n)\)):

\[\begin{aligned}
& \ \ \ \ \ \sum\limits_{i = 2} ^ m \frac{1}{i} \sum\limits_{j \mid i} [\forall k \in [1, n], \frac{i}{j} \mid a_k] f(j, i / j) \varphi(i / j)\\
&= \sum\limits_{i = 2} ^ m \frac{1}{i} \sum\limits_{j \mid i} [j \mid G] f(i / j, j) \varphi(j)\\
&= \sum\limits_{i \mid G} \sum\limits_{i \mid j} \frac{1}{j}f(j / i, i)\varphi(i) - f(1, 1)
\end{aligned}
\]

考虑一下 \(f\) 怎么求,由于是无标号有根有序带颜色树的方案,可以先忽略颜色的限制,最后再染色即可。

令 \(g(s) = \frac{(m / s)!}{\prod\limits_{i = 1} ^ n (a_i / s)!}\),\(f'(n, m)\) 为 \(m\) 个点构成 \(n\) 棵(树之间有标号)无标号有根有序树的方案,则:

\[f(n, k) = g(k) \times f'(n, m / k)
\]

考虑怎么求 \(f\),注意到一颗无标号有根有序树方案为卡特兰数 \(C(x)\) 前一项的值,则有:

\[f'(m, n) = [x ^ n](xC(x)) ^ m
\]

有 \(C(x) = \frac{1 - \sqrt{1 - 4x}}{2x}, F(x) = xC(x) = \frac{1 - \sqrt{1 - 4x}}{2}\),易得 \(F(x)\) 复合逆 \(G(x) = x(1 - x)\),令 \(H(x) = x ^ m\),则根据扩展拉格朗日反演:

\[\begin{aligned}
f'(m, n) &= [x ^ n](xC(x)) ^ m\\
&= [x ^ n]H(F(x))\\
&= \frac{1}{n}[x ^ {n - 1}]H'(x)\left(\frac{x}{G(x)}\right) ^ n\\
&= \frac{m}{n}[x ^ {n - m}]\frac{1}{(1 - x) ^ n}\\
&= \frac{m}{n}\binom{2n - m - 1}{n - 1}
\end{aligned}
\]

当然,这个通项公式也存在一个组合解释,下面考虑 \([x ^ n]C ^ m(x)\) 的组合意义:

  • 所有合法长度为 \(2n\) 的完美匹配括号序列划分成 \(m\) 个完美匹配括号序列的方案,划分可以为空。

将括号序列转化为 \(1 / -1\) 排列的问题,可以将一个划分的末尾加上一个 \(-1\) 以示区分,为了方便 不在 最后放 \(-1\),发现此时的括号序列满足两个必要条件:

  • 有 \(n\) 个 \(1\) 和 \(n + m - 1\) 个 \(-1\).
  • 任意前缀前缀和 \(\ge -m + 1\).

此时容易证明这两个必要条件也是充要条件,将这个问题再转化,就是从 \((0, 0)\) 开始走到 \((n, n + m - 1)\) 不穿过 \(y = x + m - 1\) 的方案,这是一个经典问题,答案为:

\[\binom{2n + m - 1}{n} - \binom{2n + m - 1}{n - 1}
\]

此时通过简单化简就可以解释由拉格朗日反演导出的组合恒等式。


带回最初的答案式:

\[\frac{1}{m}\left(\sum\limits_{i \mid G} g(i) \varphi(i)\sum\limits_{j = 1} ^ {m / i} \binom{2(m / i) - j - 1}{m / i - 1} - g(1)\binom{2m - 2}{m - 1}\right)
\]

可以直接暴力计算,复杂度 \(\mathcal{O}(n\sigma_0(G) + \sigma_1(m))\).


做法二

将 \(f\) 直接带入初始的表达式:

\[\begin{aligned}
& \ \ \ \ \ \sum\limits_{i \mid G} \sum\limits_{i \mid j} \frac{1}{j}f(j / i, i)\varphi(i) - f(1, 1)\\
&= \sum\limits_{i \mid G} g(i)\varphi(i) \sum\limits_{i \mid j} \frac{1}{j} [x ^ {m / i}]F ^ {j / i}(x) - \frac{1}{m}g(1)\binom{2m - 2}{m - 1}\\
&= \sum\limits_{i \mid G} \frac{1}{i}g(i)\varphi(i) [x ^ {m / i}]\sum\limits_{j = 1} ^ {m / i} \frac{F ^ {j}(x)}{j} - \frac{1}{m}g(1)\binom{2m - 2}{m - 1}\\
&= \sum\limits_{i \mid G} \frac{1}{i}g(i)\varphi(i) [x ^ {m / i}]\sum\limits_{j = 1} ^ \infty \frac{F ^ {j}(x)}{j} - \frac{1}{m}g(1)\binom{2m - 2}{m - 1}\\
&= \sum\limits_{i \mid G} \frac{1}{i}g(i)\varphi(i) [x ^ {m / i}]-\ln(1 - F(x)) - \frac{1}{m}g(1)\binom{2m - 2}{m - 1}\\
\end{aligned}
\]

于是可以先多项式求 \(\ln\) 再直接暴力统计,复杂度 \(\mathcal{O}(m \log m + n\sigma_0(G))\),注意学习和式修改上界的技巧。

「Celeste-B」Say Goodbye的更多相关文章

  1. 前端构建工具之gulp(一)「图片压缩」

    前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...

  2. fir.im Weekly - 如何打造 Github 「爆款」开源项目

    最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...

  3. 更新日志 - fir.im「高级统计」功能上线

    距离 2016 年到来只剩 10 个日夜,fir.im 也准备了一些新鲜的东西,比如「高级统计」功能和「跳转应用商店」功能,帮助你更好地管理.优化应用,欢迎大家试用反馈:) 新增高级统计功能 这次更新 ...

  4. Notepad++ 开启「切分窗口」同时检视、比对两份文件

    Notepad++ 是个相当好用的免费纯文本编辑器,除了内建的功能相当多之外,也支持外挂模块的方式扩充各方面的应用.以前我都用 UltraEdit 跟 Emeditor,后来都改用免费的 Notepa ...

  5. 「zigbee - 1」工欲善其事必先利其器 - IAR for 8051 IDE customization

    最近在实验室做一些 Zigbee 相关的事情,然而一直没在博客上记录啥东西,也不像原来在公司有动力在 Confluence wiki 上扯东扯西.直到前些阵子,跑到 feibit 论坛上(国内较大的一 ...

  6. 「C语言」文件的概念与简单数据流的读写函数

    写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...

  7. 「C语言」Windows+EclipseCDT下的C语言开发环境准备

    之前写过一篇 「C语言」在Windows平台搭建C语言开发环境的多种方式 ,讨论了如何在Windows下用DEV C++.EclipseCDT.VisualStudio.Sublime Test.Cl ...

  8. 如何对抗 WhatsApp「蓝色双勾」-- 3 个方法让你偷偷看讯息

    WhatsApp 强制推出新功能「蓝色双勾 (✔✔)」 ,让对方知道你已经看过讯息.一众用户反应极大,因为以后不能再藉口说未看到讯息而不回覆.究竟以后 WhatsApp 是否真的「更难用」? 幸好还有 ...

  9. FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...

  10. ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_201 ...

随机推荐

  1. 洛谷 P1439 【模板】最长公共子序列(DP,LIS?)

    题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...

  2. Reproducing Kernel Hilbert Space (RKHS)

    目录 概 主要内容 RKHS-wiki 概 这里对RKHS做一个简单的整理, 之前的理解错得有点离谱了. 主要内容 首先要说明的是, RKHS也是指一种Hilbert空间, 只是其有特殊的性质. Hi ...

  3. iOS提交AppStore审核时:提示有其他支付并隐藏功能被拒的处理办法

    背景提示:数字类产品(比如购买会员等不需要配送实物的商品),Apple规定必须使用苹果IAP应用内支付,给Apple分成30%.打包的时候不要勾选微信或支付宝等其他支付方式.如果你提交的包里包含了微信 ...

  4. [opencv]三通道图像反色

    1.用纯白图像-原图 Mat img = imread(path); imshow("src", img); waitKey(); Mat white = cv::Mat(250, ...

  5. spring练习,使用Eclipse搭建的Spring开发环境,使用set注入方式为Bean对象注入属性值并打印输出。

    相关 知识 >>> 相关 练习 >>> 实现要求: 使用Eclipse搭建的Spring开发环境,使用set注入方式为Bean对象注入属性值并打印输出.要求如下: ...

  6. HTML5 +Java基础 大一结业认证考试试题 - 云南农业职业技术学院 - 互联网技术学院 - 美和易思校企合作专业

     第1题 [单选题][0.33分][概念理解] 关于java中的逻辑运算符,下列说法正确的是 逻辑运算符||.&&.!都是用于连接两个关系表达式</p> 当&&am ...

  7. MongoDB学习 - 安装部署

    1. docker 启动 拉取镜像 docker pull mongo:latest 指定目录启动  docker run -d -p 27017:27017 --name mongo \-v /ho ...

  8. Go语言系列之单元测试

    go test工具 Go语言中的测试依赖go test命令.编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法.规则或工具. go test命令是一个按照一定约定和组织的测试代码的驱动 ...

  9. SpringBoot学习笔记四之后台登录页面的实现

    注:图片如果损坏,点击文章链接: https://www.toutiao.com/i6803542216150090252/ 继续之前完成的内容,首先创建一个常量类 常量类的内容 服务器端渲染 前后端 ...

  10. Windows系统上搭建Clickhouse开发环境

    Windows系统上搭建Clickhouse开发环境 总体思路 微软的开发IDE是很棒的,有两种:Visual Studio 和 VS Code,一个重量级,一个轻量级.近年来VS Code越来越受欢 ...