[集训队作业2018] count(笛卡尔树,生成函数,卡特兰数)

传送门

什么情况下两序列同构

对于两序列 A [ 1 , n ] , B [ 1 , n ] A[1,n],B[1,n] A[1,n],B[1,n],设 f A ( 1 , n ) = p a , f B ( 1 , n ) = p b f_A(1,n)=p_a,f_B(1,n)=p_b fA(1,n)=pa,fB(1,n)=pb

  • p a ≠ p b p_a\not=p_b pa=pb A , B A,B A,B一定不同构。
  • p a = p b p_a=p_b pa=pb
    A [ 1 , p a − 1 ] A[1,p_a-1] A[1,pa1] B [ 1 , p b − 1 ] B[1,p_b-1] B[1,pb1]同构且 A [ p a + 1 , n ] A[p_a+1,n] A[pa+1,n] B [ p b + 1 , n ] B[p_b+1,n] B[pb+1,n]同构,则 A [ 1 , n ] , B [ 1 , n ] A[1,n],B[1,n] A[1,n],B[1,n]同构;
    否则 A , B A,B A,B不同构。

由这个过程想到什么?笛卡尔树!
没错,两序列同构当且仅当它们的笛卡尔树形态相同

生成函数做法

引理证明:
A = { X ∣ 序 列 X 长 度 为 n , 序 列 X 中 的 每 个 数 都 是 1 到 m 内 的 整 数 } A=\{X| 序列X长度为n,序列X中的每个数都是1到m内的整数\} A={ XXn,X1m}
B = { X ∣ 序 列 X 长 度 为 n , 序 列 X 中 的 每 个 数 都 是 1 到 m 内 的 整 数 , 且 序 列 X 中 的 最 大 值 为 m } B=\{X| 序列X长度为n,序列X中的每个数都是1到m内的整数,且序列X中的最大值为m\} B={ XXn,X1mXm}
C = { X ∣ 序 列 X 长 度 为 n , 序 列 X 中 的 每 个 数 都 是 1 到 m 内 的 整 数 , 且 所 有 1 到 m 内 的 整 数 都 在 序 列 X 中 出 现 过 } C=\{X| 序列X长度为n,序列X中的每个数都是1到m内的整数,且所有1到m内的整数都在序列 X 中出现过\} C={ XXn,X1m1mX}
可以证明 n ≥ m n\geq m nm时, A = B = C A=B=C A=B=C

证明:
首先证明 A = B A =B A=B
对于 A A A中任意一个序列 X X X,若 X X X中的最大值为 p p p,那么把 X X X中的每个数都加上 m − p m−p mp,得到序列 Y Y Y ,显然 X X X Y Y Y同构,即 X = Y X=Y X=Y Y Y Y中最大值为 m m m,即 Y ∈ B Y\in B YB
对于任意 X ∈ A X \in A XA,均有 X ∈ B X\in B XB,这说明 A ⊆ B A\subseteq B AB。而 B ⊆ A B\subseteq A BA 是显然的,因此 A = B A=B A=B

可以利用类似的方法证明 A = C A=C A=C
对于 A A A中任意一个序列 X X X,可以在同构的前提下,保持不同权值的数之间的相对大小的同时,把权值相同的数按下标顺序替换成权值不同的数。这样在 n ≥ m n\geq m nm时,通过上述替换,可以使 X X X中出现过的数增加至 m m m种。
对于任意 X ∈ A X\in A XA,均有 X ∈ C X\in C XC,这说明 A ⊆ C A\subseteq C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值