「Celeste-B」Say Goodbye
做法一
提供一个后半部分略微不同的做法。
首先,基环旋转同构肯定是用 Burnside 那套理论求不动点来解,设 \(f(n, m)\) 为每种颜色 \(/m\) 构成 \(n\) 棵(树之间有标号)无标号有根有序带颜色树的方案,那么答案为(记 \(G = \gcd(a_1, a_2, \cdots a_n)\)):
& \ \ \ \ \ \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\),注意到一颗无标号有根有序树方案为卡特兰数 \(C(x)\) 前一项的值,则有:
\]
有 \(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\),则根据扩展拉格朗日反演:
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\) 的方案,这是一个经典问题,答案为:
\]
此时通过简单化简就可以解释由拉格朗日反演导出的组合恒等式。
带回最初的答案式:
\]
可以直接暴力计算,复杂度 \(\mathcal{O}(n\sigma_0(G) + \sigma_1(m))\).
做法二
将 \(f\) 直接带入初始的表达式:
& \ \ \ \ \ \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的更多相关文章
- 前端构建工具之gulp(一)「图片压缩」
前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...
- 更新日志 - fir.im「高级统计」功能上线
距离 2016 年到来只剩 10 个日夜,fir.im 也准备了一些新鲜的东西,比如「高级统计」功能和「跳转应用商店」功能,帮助你更好地管理.优化应用,欢迎大家试用反馈:) 新增高级统计功能 这次更新 ...
- Notepad++ 开启「切分窗口」同时检视、比对两份文件
Notepad++ 是个相当好用的免费纯文本编辑器,除了内建的功能相当多之外,也支持外挂模块的方式扩充各方面的应用.以前我都用 UltraEdit 跟 Emeditor,后来都改用免费的 Notepa ...
- 「zigbee - 1」工欲善其事必先利其器 - IAR for 8051 IDE customization
最近在实验室做一些 Zigbee 相关的事情,然而一直没在博客上记录啥东西,也不像原来在公司有动力在 Confluence wiki 上扯东扯西.直到前些阵子,跑到 feibit 论坛上(国内较大的一 ...
- 「C语言」文件的概念与简单数据流的读写函数
写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...
- 「C语言」Windows+EclipseCDT下的C语言开发环境准备
之前写过一篇 「C语言」在Windows平台搭建C语言开发环境的多种方式 ,讨论了如何在Windows下用DEV C++.EclipseCDT.VisualStudio.Sublime Test.Cl ...
- 如何对抗 WhatsApp「蓝色双勾」-- 3 个方法让你偷偷看讯息
WhatsApp 强制推出新功能「蓝色双勾 (✔✔)」 ,让对方知道你已经看过讯息.一众用户反应极大,因为以后不能再藉口说未看到讯息而不回覆.究竟以后 WhatsApp 是否真的「更难用」? 幸好还有 ...
- FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...
- ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_201 ...
随机推荐
- css的鼠标手势总结
css的鼠标手势 cursor:pointer; 或 cursor:hand : 手型 cursor:crosshair : 十字 cursor:text : 文本 cursor:wait : 等待 ...
- RabbitMQ学习笔记五:RabbitMQ之优先级消息队列
RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...
- Type-C扩展芯片|Type-C扩展方案|CSCapstone|扩展坞方案选型
一.关于Capstone Capstone科技于2018年8月在台湾成立.团队成员的多样性将硅谷和台湾的才华横溢的人联系在一起,以进行协作和取得优越成就. Capstone科技是由一个经验丰富的研发团 ...
- JS中常见的几种控制台台报错
Error 控制台报错 EvalError 全局错误RangeError 引用错ReferenceError 参数错误SyntaxError 语法错误TypeError 类型错误URIError 编码 ...
- SpringBoot 之 扩展 SpringMVC
增加自定义视图解析器: # src/main/java/com/wu/config/MyMvcConfig.java @Configuration // 标注这个类是一个配置类 public clas ...
- Python 使用timeit模块计算时间复杂度时系统报“invalid syntax”错误
最近在看算法相关的文档 在时间复杂度环节 遇到一个实例: 导入timeit模块后,通过Timer定时器计算两种不同处理方法的时间复杂度 错误代码及报错如下图所示: 仔细查阅 发现from__main_ ...
- Flask_获取请求信息(三)
引用request的方法: from flask import request 与Django不同的是,flask是不需要将request对象作为第一个参数传入视图函数,他的request对象是来自于 ...
- 下面哪些命令可以查看file1文件的第300-500行的内容?
下面哪些命令可以查看file1文件的第300-500行的内容? cat file1 | tail -n +300 | head -n 200 cat file1| head -n 500 | tail ...
- sql server - 修改表名、列名
EXEC sp_rename '旧表名', '新表名'; 例子 EXEC sp_rename 'saveremark', 'drawingLooking'; EXEC sp_rename '表名.[列 ...
- Tomcat8/9的catalina.out中文乱码问题解决
OS: Red Hat Enterprise Linux Server release 7.8 (Maipo) Tomcat: 9 中文显示为???问号 在$CATALINA_HOME/conf下的l ...