B y H o l y P u s h By\quad HolyPush ByHolyPush
愚蠢的 H P HP HP听说聪明的 t x l txl txl秒杀了国集队员,并顺利横扫了五大竞赛所有的国际最高奖项,专门等在班级门口迎接他的凯旋归来。
本来想好好叙叙旧,或者倾诉一下他不在的日子里自己是怎么被大魔头 w j wj wj欺负的,以及自己对他的思念之情,但是又想到前几天愚蠢的 H P HP HP因为言语不当被聪明的 t x l txl txl在 Q Q QQ QQ上骂了而难以启齿……没想到他回来之后并没有太在意,对愚蠢的 H P HP HP说的第一句话竟是 … … …… ……
聪明的
t
x
l
:
txl:
txl:听说你们最近在学等比数列嘛。
愚蠢的
H
P
:
HP:
HP:是的惹,怎么了
?
?
?
聪明的
t
x
l
:
txl:
txl:那我教你一点看起来有用但又没那么有用的东西。
(
(
(聪明的
t
x
l
txl
txl开始讲故事
)
)
)
故事要从一只蝙蝠说起。
由于一只蝙蝠,愚蠢的
H
P
HP
HP,聪明的
t
x
l
txl
txl,法力无边的
w
j
l
wjl
wjl,大魔头
w
j
wj
wj,法力同样无边的
c
j
cj
cj,无敌的一哥,裂开的
z
y
b
zyb
zyb,多么寂寞的
z
m
zm
zm,憨憨的
b
b
bb
bb以及猿猴之王
z
j
j
zjj
zjj十个对立国家的首领不得已走到一起联合对抗这只恐怖的蝙蝠。
为了对抗恐怖的蝙蝠,他们分工合作,想要得到一定数量的金木水火土五种能量。当然,由于各个首领对某一种能量会产生一定的抗拒,所以他们想要满足:
愚蠢的
H
P
HP
HP希望自己获得的金能量数为
6
6
6的倍数。
聪明的
t
x
l
txl
txl希望自己获得的金能量数为
2
2
2的倍数。
法力无边的
w
j
l
wjl
wjl希望自己获得的木能量至多只有
5
5
5个。
大魔头
w
j
wj
wj希望自己获得的木能量数之多只有
1
1
1个。
法力无边的
c
j
cj
cj希望自己获得的水能量数至多只有
9
9
9个。
无敌的一哥希望自己获得的水能量数是
8
8
8的倍数。
裂开的
z
y
b
zyb
zyb希望自己获得的火能量数是
4
4
4的倍数。
多么寂寞的
z
m
zm
zm希望自己获得的火能量数是
10
10
10的倍数。
憨憨的
b
b
bb
bb希望自己获得的土能量数量至多为
7
7
7个。
猿猴之王
z
j
j
zjj
zjj希望自己获得的土能量最多只有
3
3
3个。
每个首领只要做好自己的本分的工作就好了,而且互相之间是不干扰的。比如愚蠢的 H P HP HP就算得到了 18000 18000 18000个金能量也跟聪明的 t x l txl txl没关系,而愚蠢的 H P HP HP也没有精力去找除了金能量之外的其他能量,当然他也可以选择完全不找金能量,毕竟 0 0 0也是 6 6 6的倍数。
然而根据能量守恒定律,世界上总能量的数量是不变的,假设总能量数是 n n n, 每种能量都可以视为是五种能量中的任意一种。那么请问,要使每个首领手上的能量数都能满足自己的要求,并且不浪费能量,那么一共有多少种可能 ? ? ? ( ( (熟悉的小朋友可以很轻易地发现这道题是洛谷 P 2000 ) P2000) P2000)
愚蠢的
H
P
:
HP:
HP:条件这
t
m
tm
tm也太多了,这完全不可做嘛
!
!
!而且我连题目都没看懂。
聪明的
t
x
l
:
txl:
txl:题目都看不懂
…
…
……
……算了,举个栗子吧。
当 n = 0 n=0 n=0的时候,由于世界上没有能量,所有 10 10 10个首领的能量都为 0 0 0,但的确满足十个人的要求,所以答案为 1 1 1。
当 n = 1 n=1 n=1的时候,世界上只有一个能量。把这个能量分配出去,那么可以分配给法力无边的 w j l wjl wjl、大魔头 w j wj wj、法力无边的 c j cj cj、憨憨的 b b bb bb和猿猴之王 z j j zjj zjj五个人,所以共五种可能。答案为 5 5 5。
当 n = 2 n=2 n=2的时候,世界上有两个能量。如果将两个能量分配给一个人,那么一共有 5 5 5种可能。如果将两个能量分配给两个人,那么一共有 C 5 2 = 10 C_5^2=10 C52=10种可能,加起来一共就是 15 15 15。
愚蠢的
H
P
HP
HP照这样枚举了半天,但始终没有发现什么规律。于是他放弃了。
聪明的
t
x
l
:
txl:
txl:解决这个问题需要用到组合数学中的一个非常有用的东西,叫做生成函数。
愚蠢的
H
P
:
HP:
HP:生成函数
?
?
?
简单地来说,一个数列
{
a
n
}
\{a_{n}\}
{an},为了方便,接下来所有内容中都假设它的下标从
0
0
0开始,则它的生成函数就是
f
(
x
)
=
∑
i
=
0
n
a
i
x
i
f(x)=\sum_{i=0}^na_ix^i
f(x)=∑i=0naixi,定义域为
x
∈
(
−
1
,
1
)
x∈(-1,1)
x∈(−1,1)。
举个栗子,数列
1
,
2
,
3
,
4
,
5
1,2,3,4,5
1,2,3,4,5的生成函数就是
f
(
x
)
=
1
+
2
x
+
3
x
2
+
4
x
3
+
5
x
4
f(x)=1+2x+3x^2+4x^3+5x^4
f(x)=1+2x+3x2+4x3+5x4。就是这样。
愚蠢的
H
P
:
HP:
HP:那么简单
?
?
?这东西有屁用厚。
聪明的
t
x
l
:
txl:
txl:先等等。我们先看看下面这个问题。
已知一列灯有
n
n
n个,每个灯都有开关两种状态。那么其中有
m
m
m个电灯开着的情况有多少种
?
?
?
愚蠢的
H
P
:
HP:
HP:我屁股都知道是
C
n
m
C_n^m
Cnm。
聪明的
t
x
l
:
txl:
txl:很好,那我们来继续研究一下这个问题。你们技术不是刚学过二进制吗
?
?
?开着用
1
1
1表示,关着用
0
0
0表示。那么一列灯有多少盏亮着,是不是只要求这一列数的和就好了。
愚蠢的
H
P
:
HP:
HP:是。
这样的话,我们把 0 , 1 0,1 0,1放到指数上去。每一盏灯的状态用一个式子 x + 1 x+1 x+1表示。所有灯的状态都是独立的,所以整体状态就是单个灯的状态乘起来,就是 ( x + 1 ) n (x+1)^n (x+1)n这个多项式。这个多项式是什么意思呢?
以 n = 3 n=3 n=3为例,我们把它分开来写。 ( x + 1 ) ( x + 1 ) ( x + 1 ) (x+1)(x+1)(x+1) (x+1)(x+1)(x+1)。我们啥都不会的时候要展开多项式,就是每个单项式里面都取出来一个乘起来,最后再合并同类项。事实上,每一种开关状态都对应着一个乘的选择。例如,开关开这个状态对应 x × 1 × x x×1×x x×1×x,关关开对应 1 × 1 × x 1×1×x 1×1×x,以此类推。显然可以发现,某个状态中亮着的灯的数量,与乘出来的多项式的次数是一致的。
所以 ( x + 1 ) n (x+1)^n (x+1)n这个结果展开后, m m m次项的结果是多少,亮着的灯有 m m m盏的状态就有多少个。二项式定理告诉我们答案是 C n m C_n^m Cnm。
愚蠢的 H P : HP:\; HP:妙啊!
再如,我们有两个格子,其中第一个格子上的分值为
1
,
3
,
4
,
7
1,3,4,7
1,3,4,7分,第二个格子上的分数为
0
,
1
,
5
0,1,5
0,1,5分,那么从两个格子种分别取出一个分值,然后相加,得分为
8
8
8分的可能有多少
?
?
?
我们只要将两个格子所表示的多项式写出来即可。根据前面的思想我们可以将第一个格子的多项式写为
x
+
x
3
+
x
4
+
x
7
x+x^3+x^4+x^7
x+x3+x4+x7,分别表示得
1
1
1分,
3
3
3分,
4
4
4分,
7
7
7分的选择,另一个多项式相应地写出来是
1
+
x
+
x
5
1+x+x^5
1+x+x5。两个多项式相乘,次数为
8
8
8的项的系数为多少,就是有多少种可能性。
容易看出,我们只对 x x x的次数感兴趣,而不对 x x x这个值感兴趣,所以 x x x的定义域并不是很重要,定义 x ∈ ( − 1 , 1 ) x∈(-1,1) x∈(−1,1)会对后续操作带来极大的方便。
愚蠢的
H
P
:
HP:\;
HP:妙归妙,但这种方法有什么用
?
?
?不是比枚举慢好多嘛
?
?
?
聪明的
t
x
l
:
txl:\;
txl:不,你接着看吧。
已知某一个等比数列的通项公式为 a n = q n , n ∈ N a_n=q^n,n∈N an=qn,n∈N,则其生成函数为 f ( x ) = 1 + q x + q 2 x 2 + . . . . + q n x n f(x)=1+qx+q^2x^2+....+q^nx^n f(x)=1+qx+q2x2+....+qnxn。这个式子显然可以用求和公式把它化简出来即 ( x q ) n + 1 − 1 x q − 1 \frac{(xq)^{n+1}-1}{xq-1} xq−1(xq)n+1−1,当 n n n趋向于无穷大的时候,由于 x ∈ ( − 1 , 1 ) x∈(-1,1) x∈(−1,1),取 x x x为一个绝对值非常小的量,它将等于 1 1 − q x \frac{1}{1-qx} 1−qx1,即 1 + q x + q 2 x 2 + . . . = 1 1 − q x 1+qx+q^2x^2+...=\frac{1}{1-qx} 1+qx+q2x2+...=1−qx1。当 q = 1 q=1 q=1的时候,有 1 + x + x 2 + . . . = 1 1 − x 1+x+x^2+...=\frac{1}{1-x} 1+x+x2+...=1−x1。(其实如果不理解的话把右式的分母乘到左边去就很显然了)
同理的,
1
+
x
k
+
x
2
k
+
.
.
.
=
1
1
−
x
k
1+x^k+x^{2k}+...=\frac{1}{1-x^k}
1+xk+x2k+...=1−xk1。
另外,如果给
1
+
x
+
x
2
+
.
.
.
=
1
1
−
x
1+x+x^2+...=\frac{1}{1-x}
1+x+x2+...=1−x1。两边同时
k
k
k次方一下,会发生什么呢?
右边是显然的,左边的话,我们回到上面举的例子里面的方法,实际上
n
n
n次项的系数就是将
k
k
k个式子中每个式子取出一个数,使得它们的积的指数为
n
n
n的方案数,说白了就是把
n
n
n拆成
k
k
k个自然数之和的方案数,不同顺序当做不同方案,隔板法求得系数为
C
n
+
k
−
1
k
−
1
C_{n+k-1}^{k-1}
Cn+k−1k−1。即
∑
i
=
0
∞
C
i
+
k
−
1
k
−
1
x
i
=
1
(
1
−
x
)
k
\sum_{i=0}^{∞}C_{i+k-1}^{k-1}x^i=\frac{1}{(1-x)^k}
∑i=0∞Ci+k−1k−1xi=(1−x)k1
.
.
.
...
...
接下来我们来看看如何用生成函数求斐波那契数列通项公式。
将斐波那契数列的生成函数设为
A
=
1
+
x
+
2
x
2
+
3
x
3
+
5
x
4
+
.
.
.
A=1+x+2x^2+3x^3+5x^4+...
A=1+x+2x2+3x3+5x4+...,
肉眼可见的是
x
A
=
x
+
x
2
+
2
x
3
+
.
.
.
xA=x+x^2+2x^3+...
xA=x+x2+2x3+...
两式相减得
(
1
−
x
)
A
=
1
+
x
2
+
x
3
+
2
x
4
+
3
x
5
+
.
.
.
=
1
+
x
2
A
(1-x)A=1+x^2+x^3+2x^4+3x^5+...=1+x^2A
(1−x)A=1+x2+x3+2x4+3x5+...=1+x2A
解得
A
=
1
1
−
x
−
x
2
A=\frac{1}{1-x-x^2}
A=1−x−x21。刚刚我们得到的结果里面好像没有长这样的,但我们可以通过裂项把它写成上面那样。
显然我们要得到的式子可以写为
a
1
1
1
−
b
1
x
+
a
2
1
1
−
b
2
x
a_1\frac{1}{1-b_1x}+a_2\frac{1}{1-b_2x}
a11−b1x1+a21−b2x1的形式。可以解得
b
1
=
1
+
5
2
,
b
2
=
1
−
5
2
,
a
1
=
5
5
b
1
,
a
2
=
−
5
5
b
2
b_1=\frac{1+\sqrt{5}}{2},b_2=\frac{1-\sqrt{5}}{2},a_1=\frac{\sqrt{5}}{5}b_1,a_2=-\frac{\sqrt{5}}{5}b_2
b1=21+5,b2=21−5,a1=55b1,a2=−55b2。
然后我们要考虑的是怎么把这个生成函数还原回去。
我们知道生成函数的
n
n
n次项的系数即为数列第
n
n
n项的值,而且我们又得到了结论
1
+
q
x
+
q
2
x
2
+
.
.
.
=
1
1
−
q
x
1+qx+q^2x^2+...=\frac{1}{1-qx}
1+qx+q2x2+...=1−qx1,所以
n
n
n次项的系数就是
a
1
×
b
1
n
+
a
2
×
b
2
n
=
5
5
[
(
1
+
5
2
)
n
+
1
−
(
1
−
5
2
)
n
+
1
]
a_1×b_1^n+a_2×b_2^n=\frac{\sqrt{5}}{5}[(\frac{1+\sqrt{5}}{2})^{n+1}-(\frac{1-\sqrt{5}}{2})^{n+1}]
a1×b1n+a2×b2n=55[(21+5)n+1−(21−5)n+1]。
愚蠢的
H
P
:
HP:\;
HP:,等等,我把
n
=
2
n=2
n=2代进去算出来是
2
2
2,这是数列第三项啊。
聪明的
t
x
l
:
txl:\;
txl:醉了,你忘了我们定义的时候把
0
0
0下标作为第一项吗
?
?
?所以你代
n
=
0
n=0
n=0进去算出来就是斐波那契数列第一项,
n
=
2
n=2
n=2代进去算出来当然上述斐波那契第三项。你要真把
1
,
1
,
2
1,1,2
1,1,2作为数列的第一项、第二项和第三项,那么答案就是
f
i
b
n
=
5
5
[
(
1
+
5
2
)
n
−
(
1
−
5
2
)
n
]
fib_n=\frac{\sqrt{5}}{5}[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]
fibn=55[(21+5)n−(21−5)n]。
愚蠢的
H
P
:
HP:\;
HP:惹。
当然你大可以通过二阶递推式的通用方法去求解斐波那契数列的通项公式,这里只是给生成函数强行刷了一波存在感,真素小题大做厚。
愚蠢的
H
P
:
HP:
HP:所以开头那题怎么做惹
?
?
?
聪明的
t
x
l
:
txl:
txl:接下来不是很简单了嘛
?
?
?
由于每个人的要求都是独立的,所以可以写出每个人的要求的生成函数,再乘起来即可。
愚蠢的 H P HP HP希望自己获得的金能量数为 6 6 6的倍数。则他的要求写成生成函数就是 1 + x 6 + x 12 + . . . = 1 1 − x 6 1+x^6+x^{12}+...=\frac{1}{1-x^6} 1+x6+x12+...=1−x61
聪明的 t x l txl txl希望自己获得的金能量数为 2 2 2的倍数。写成生成函数就是 1 + x 2 + x 4 + . . . = 1 1 − x 2 1+x^2+x^4+...=\frac{1}{1-x^2} 1+x2+x4+...=1−x21
法力无边的 w j l wjl wjl希望自己获得的木能量至多只有 5 5 5个。写成生成函数就是 1 + x + x 2 + . . . + x 5 1+x+x^2+...+x^5 1+x+x2+...+x5,由于这个生成函数不是无穷的,所以等于 1 − x 6 1 − x \frac{1-x^6}{1-x} 1−x1−x6
大魔头 w j wj wj希望自己获得的木能量数之多只有 1 1 1个。写成生成函数就是 1 + x = 1 − x 2 1 − x 1+x=\frac{1-x^2}{1-x} 1+x=1−x1−x2
法力无边的 c j cj cj希望自己获得的水能量数至多只有 9 9 9个。写成生成函数就是 1 + x + x 2 + . . . + x 9 = 1 − x 10 1 − x 1+x+x^2+...+x^9=\frac{1-x^{10}}{1-x} 1+x+x2+...+x9=1−x1−x10
无敌的一哥希望自己获得的水能量数是 8 8 8的倍数。写成生成函数就是 1 + x 8 + x 16 + . . . = 1 1 − x 8 1+x^8+x^{16}+...=\frac{1}{1-x^8} 1+x8+x16+...=1−x81
裂开的 z y b zyb zyb希望自己获得的火能量数是 4 4 4的倍数。写成生成函数就是 1 + x 4 + x 8 + . . . = 1 1 − x 4 1+x^4+x^{8}+...=\frac{1}{1-x^4} 1+x4+x8+...=1−x41
多么寂寞的 z m zm zm希望自己获得的火能量数是 10 10 10的倍数。写成生成函数就是 1 + x 10 + x 20 + . . . = 1 1 − x 10 1+x^{10}+x^{20}+...=\frac{1}{1-x^{10}} 1+x10+x20+...=1−x101
憨憨的 b b bb bb希望自己获得的土能量数量至多为 7 7 7个。写成生成函数就是 1 + x + x 2 + . . . + x 7 = 1 − x 8 1 − x 1+x+x^2+...+x^7=\frac{1-x^8}{1-x} 1+x+x2+...+x7=1−x1−x8
猿猴之王 z j j zjj zjj希望自己获得的土能量最多只有 3 3 3个。写成生成函数就是 1 + x + x 2 + x 3 = 1 − x 4 1 − x 1+x+x^2+x^3=\frac{1-x^4}{1-x} 1+x+x2+x3=1−x1−x4
O K , OK, OK,将十个式子全部乘起来。得到 f ( x ) = 1 ( 1 − x ) 5 f(x)=\frac{1}{(1-x)^5} f(x)=(1−x)51。由于 n n n个能量必须用完,所以我们要求的实际上是这个生成函数的 n n n次项系数。由上面的结论可以得到单就是 C n + 5 − 1 5 − 1 = C n + 4 4 C_{n+5-1}^{5-1}=C_{n+4}^4 Cn+5−15−1=Cn+44。答案就出来了。
当然,聪明的 t x l txl txl知道愚蠢的 H P HP HP是绝对没有听懂的,于是让 H P HP HP自己思考,自己做其他事情了,比如偷窥女生。
过了 5249 5249 5249分钟后, H P HP HP终于想明白了。
但是既然标题是"当组合变成了数列",那么总该有一道像样的组合题吧……于是聪明的 t x l txl txl临时出了一道题。
已知 n n n个不同的小球,放到四个不同的盒子 A , B , C , D A,B,C,D A,B,C,D中,要求 B B B中的小球数比 A A A中多 k k k个。那么一共有多少种不同的方法 ? ? ?
其实这道题正常做法也是有的 … … …… ……但思路过于复杂,所以我们使用生成函数的解法。
聪明的 t x l : txl: txl:其实,组合问题当你发现自己脑子转不过来的时候,可以考虑一下用递推的方式解决问题。利用递推解决组合问题的一般步骤是:先设一个任意维的量 f f f,例如一维的时候 f n f_n fn表示第 n n n项,二维的时候可以看成一个表格, f n , k f_{n,k} fn,k表示第 n n n行第 k k k个数是多少。设好这个量之后,明确其下标的意义,然后单独考虑某一个状态,找出递推关系式,利用生成函数化简。注意,与数列不同,这个量的下标可以是负值,甚至可以是分数,只要有实际意义。
我们来看看这道题。我们发现题目很简洁,只有两个量,总数 n n n,以及差量 k k k。如果我们把球一个一个放进去的话,题目理解起来会方便许多。我们不如设 f n , k f_{n,k} fn,k表示当我们放到第 n n n个球的时候, B B B盒比 A A A盒多 k k k个球的方案数。然后就来考虑一下递推式。
首先,如果小球放到了
A
A
A盒中。放入这个小球之后,
B
B
B比
A
A
A多了
k
k
k个球,那么没放入之前,
B
B
B应该比
A
A
A多
k
+
1
k+1
k+1个球。所以
f
n
,
k
f_{n,k}
fn,k有一项转移来源于
f
n
−
1
,
k
+
1
f_{n-1,k+1}
fn−1,k+1
其次,如果小球放到了
B
B
B盒中。放入这个小球之后,
B
B
B比
A
A
A多了
k
k
k个球,那么没放入之前,
B
B
B应该比
A
A
A多
k
−
1
k-1
k−1个球。所以
f
n
,
k
f_{n,k}
fn,k有一项转移来源于
f
n
−
1
,
k
−
1
f_{n-1,k-1}
fn−1,k−1
再者,如果小球放到了
C
C
C盒中。放入这个小球之后,
B
B
B比
A
A
A多了
k
k
k个球,那么没放入之前,
B
B
B应该还是比
A
A
A多
k
k
k个球。对
D
D
D而言同理,所以
f
n
,
k
f_{n,k}
fn,k有一项转移来源于
2
f
n
−
1
,
k
2f_{n-1,k}
2fn−1,k
综合起来,就是
f
n
,
k
=
f
n
−
1
,
k
−
1
+
2
f
n
−
1
,
k
+
f
n
−
1
,
k
+
1
f_{n,k}=f_{n-1,k-1}+2f_{n-1,k}+f_{n-1,k+1}
fn,k=fn−1,k−1+2fn−1,k+fn−1,k+1
递推关系式找到了,我们就要用生成函数啦!
将
f
n
,
k
f_{n,k}
fn,k看成是一个表格,第
n
n
n行第
k
k
k列的值为
f
n
,
k
f_{n,k}
fn,k。那么如果把第
n
n
n行的一列数看成是一个多项式
f
n
f_n
fn,
x
k
x^k
xk的系数即为
f
n
,
k
f_{n,k}
fn,k。然后我们就要来探讨一下
f
n
f_n
fn和
f
n
−
1
f_{n-1}
fn−1之间是什么瓜系。
由于 f n , k f_{n,k} fn,k的递推式里有三个不同的项,所以我们分开来讨论。
我们知道递推式里有
f
n
−
1
,
k
+
1
f_{n-1,k+1}
fn−1,k+1这一项,也就是说,
f
n
f_n
fn的任何一项系数
f
n
,
k
f_{n,k}
fn,k,都有
f
n
−
1
,
k
+
1
f_{n-1,k+1}
fn−1,k+1转移过来。直观点就是下面这样
但说到底我们还是一个多项式啊
!
\; !\;
!要看的是
x
k
f
n
,
k
x^kf_{n,k}
xkfn,k而不是单独的系数。于是我们发现,
x
k
f
n
,
k
x^kf_{n,k}
xkfn,k由
1
x
×
x
k
+
1
f
n
−
1
,
k
+
1
\frac{1}{x}×x^{k+1}f_{n-1,k+1}
x1×xk+1fn−1,k+1转移而来,乘上个
1
x
\frac{1}{x}
x1是为了让次数对上,毕竟你不可能说一个
k
k
k次项由几个非
k
k
k次项相加得来。
等等,
1
x
?
\frac{1}{x}?
x1?
我们继续写成生成函数,这次我们写多一点。
.
.
.
+
x
k
f
n
,
k
+
x
k
+
1
f
n
,
k
+
1
+
x
k
+
2
f
n
,
k
+
2
+
.
.
.
=
.
.
.
1
x
×
x
k
+
1
f
n
−
1
,
k
+
1
+
1
x
×
x
k
+
2
f
n
−
1
,
k
+
2
+
1
x
×
x
k
+
3
f
n
−
1
,
k
+
3
+
.
.
.
+
...+x^kf_{n,k}+x^{k+1}f_{n,k+1}+x^{k+2}f_{n,k+2}+...=...\frac{1}{x}×x^{k+1}f_{n-1,k+1}+\frac{1}{x}×x^{k+2}f_{n-1,k+2}+\frac{1}{x}×x^{k+3}f_{n-1,k+3}+...+
...+xkfn,k+xk+1fn,k+1+xk+2fn,k+2+...=...x1×xk+1fn−1,k+1+x1×xk+2fn−1,k+2+x1×xk+3fn−1,k+3+...+另外两部分
合并同类项之后,难道不就是
f
n
=
1
x
f
n
−
1
+
f_n=\frac{1}{x}f_{n-1}+
fn=x1fn−1+另外两部分?
由此思路下去,我们可以得到
f
n
=
1
x
f
n
−
1
+
2
f
n
−
1
+
x
f
n
−
1
=
(
1
x
+
2
+
x
)
f
n
−
1
f_n=\frac{1}{x}f_{n-1}+2f_{n-1}+xf_{n-1}=(\frac{1}{x}+2+x)f_{n-1}
fn=x1fn−1+2fn−1+xfn−1=(x1+2+x)fn−1。我们找到了相邻多项式的递推式!
而显然的,
f
0
f_0
f0中除了
f
0
,
0
=
1
f_{0,0}=1
f0,0=1之外其他都是
0
0
0,即
f
0
=
1
f_0=1
f0=1,那么由递推式可以知道
f
n
=
(
x
+
2
+
1
x
)
n
f_n=(x+2+\frac{1}{x})^n
fn=(x+2+x1)n。我们最终要求的是
f
n
,
k
f_{n,k}
fn,k,即
f
n
f_n
fn的
k
k
k次项系数。这该怎么求呢
?
?
?
我们不如先把分母去掉,变成
x
n
f
n
=
(
x
2
+
2
x
+
1
)
n
=
(
x
+
1
)
2
n
x^nf_n=(x^2+2x+1)^n=(x+1)^{2n}
xnfn=(x2+2x+1)n=(x+1)2n,则求原式
k
k
k次项系数就相当于求
(
x
+
1
)
2
n
(x+1)^{2n}
(x+1)2n的
n
+
k
n+k
n+k次项系数,也就是
C
2
n
n
+
k
C_{2n}^{n+k}
C2nn+k。
聪明的
t
x
l
:
txl:
txl:其实这道题不是我临时想的,其实这道题来源是一道物理竞赛热学题,但做着做着就像是数竞题,结果用生成函数却怎么看都是信奥题。
至于这道题的非生成函数做法,有两种。一种直接看图吧。
(其实本人也没看懂到底是什么意思)
第二种则很清真,我们枚举
A
A
A盒子的球的数量,如果放
i
i
i个则
A
A
A球有
C
n
i
C_n^i
Cni种选择,
B
B
B有
C
n
−
i
i
+
k
C_{n-i}^{i+k}
Cn−ii+k种选择,
C
,
D
C,D
C,D则一共有
2
n
−
2
i
−
k
2^{n-2i-k}
2n−2i−k种方法。所以最终答案是
∑
i
=
0
,
2
i
+
k
≤
n
C
n
i
C
n
−
i
i
+
k
2
n
−
2
i
−
k
\sum_{i=0,2i+k≤n}C_n^iC_{n-i}^{i+k}2^{n-2i-k}
∑i=0,2i+k≤nCniCn−ii+k2n−2i−k,化简即可(本人也不知道怎么化简)
回过头来看这个式子,其实这个式子就是我们遇到
f
n
=
(
x
+
2
+
1
x
)
n
f_n=(x+2+\frac{1}{x})^n
fn=(x+2+x1)n的时候的第一反应系数计算方法。要使结果指数为
k
k
k,那么
x
x
x项乘的次数比
1
x
\frac{1}{x}
x1多
k
k
k,剩下的都分配给
2
2
2,也便有了上面那个式子。
欲知后事如何,请听下回因式分解。