| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【XSY4320】Catalan(组合意义,DP,多项式) -> 正文阅读 |
|
[数据结构与算法]【XSY4320】Catalan(组合意义,DP,多项式) |
题面: 题解: 假瑞的做法orz 考虑用组合意义来做,观察递推式 f i = 1 i ∑ j = 0 i ? 1 f j f i ? j ? 1 f_i=\frac{1}{i}\sum_{j=0}^{i-1}f_jf_{i-j-1} fi?=i1?∑j=0i?1?fj?fi?j?1?,它除了和卡特兰数递推式很像之外,还和二叉树计数的递推式很像。 同时注意到 f 0 = 0 f_0=0 f0?=0,所以递推式可以变为 f i = 1 i ∑ j = 1 i ? 2 f j f i ? j ? 1 f_i=\frac{1}{i}\sum_{j=1}^{i-2}f_jf_{i-j-1} fi?=i1?∑j=1i?2?fj?fi?j?1?,即我们二叉树中每个非叶子节点都有恰好两个儿子,那么也可知 n n n 一定为奇数。下面 “完全二叉树” 的意义为每个非叶子节点都有恰好两个儿子的二叉树。 那么 f n f_n fn? 就可以理解为枚举每一种完全二叉树,然后把 ∏ u 1 s z u \prod_{u}\frac{1}{sz_u} ∏u?szu?1? 的贡献统计进答案。 注意这里枚举的二叉树是无标号但是有左右儿子之分的,那么我们不妨将这棵二叉树上的点按 dfn 序标号。 发现 ∏ u 1 s z u \prod_u\frac{1}{sz_u} ∏u?szu?1? 就是这棵二叉树的拓扑序数量除以 n ! n! n!,那么现在的问题转变为:枚举每一种二叉树,然后把其拓扑序个数统计进答案。 考虑每个点 i i i(注意这里是按 dfn 序标号,上面已经说过了)在拓扑序中的位置 p o s i pos_i posi?,发现对于每一种 1 ~ n 1\sim n 1~n 的排列,如果把它当做 p o s pos pos 序列的话,其唯一对应着一棵普通二叉树,即为这个排列的笛卡尔树。 但是还没完,这个 p o s pos pos 序列对应的不一定是一棵完全二叉树,我们只要那些完全二叉树的方案。 发现一棵树是完全二叉树当且仅当 dfn 序为奇数的点都是叶子,那么一个序列
p
o
s
pos
pos 是来自完全二叉树的当且仅当: 考虑让所有大于号都满足,然后容斥哪些小于号不满足,那么就得到了若干段连续的大于号,即: 设
F
(
x
)
=
∑
i
≥
1
,
2
∣
i
(
?
1
)
i
/
2
?
1
i
!
x
i
F(x)=\sum_{i\geq 1,2|i}\frac{(-1)^{i/2-1}}{i!}x^i
F(x)=∑i≥1,2∣i?i!(?1)i/2?1?xi,
G
(
x
)
=
∑
i
≥
1
,
2
∣?
i
(
?
1
)
(
i
?
1
)
/
2
i
!
x
i
G(x)=\sum_{i\geq 1,2\not|i}\frac{(-1)^{(i-1)/2}}{i!}x^i
G(x)=∑i≥1,2?∣i?i!(?1)(i?1)/2?xi,那么我们要求的就是: 神奇的是,你发现
∑
i
≥
0
(
?
1
)
i
/
2
i
!
x
i
=
cos
?
(
x
)
\sum_{i\geq 0}\frac{(-1)^{i/2}}{i!}x^i=\cos(x)
∑i≥0?i!(?1)i/2?xi=cos(x),
G
(
x
)
=
sin
?
(
x
)
G(x)=\sin (x)
G(x)=sin(x),于是我们要求的其实是: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:29:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |