- 题目比较神,但如果听了大神 l d x ldx ldx 讲了就可以很快做出来
- 考虑列作为点,行作为一条边,那么最后的图就是若干个环及若干条链的图,点带标号边带标号
考虑枚举链的个数 i i i,那么点数 i + n i+n i+n,方案数 ( m i + n ) \binom{m}{i+n} (i+nm),给每个图分配边,方案数为
n ! ∏ ( s z i ! ) ∏ ( s z i − 1 ) ! \frac{n!}{\prod (sz_i!)\prod (sz_i-1)!} ∏(szi!)∏(szi−1)!n!, s z sz sz 为点或环的方案数,把这个写到 E G F EGF EGF 里面,构造出链和环的生成函数(同时包涵点边的信息)
F
(
x
)
=
∑
i
≥
2
x
i
2
=
x
2
2
(
1
−
x
)
G
(
x
)
=
∑
i
≥
2
x
i
2
∗
i
a
n
s
=
n
!
∑
i
=
0
n
(
m
i
+
n
)
[
x
i
+
n
]
(
i
+
n
)
!
exp
(
G
(
x
)
)
∗
F
(
x
)
i
i
!
=
n
!
m
n
‾
∑
i
=
0
n
(
m
−
n
)
i
‾
[
x
n
]
exp
(
G
(
x
)
)
∗
(
F
(
x
)
/
x
)
i
i
!
F(x)=\sum_{i\ge 2} \frac{x^i}{2}=\frac{x^2}{2(1-x)}\\ G(x)=\sum_{i\ge 2}\frac{x^i}{2*i}\\ ans=n!\sum_{i=0}^n\binom{m}{i+n}[x^{i+n}](i+n)!\exp (G(x))*\frac{F(x)^i}{i!}\\=n!m^{\underline n}\sum_{i=0}^n (m-n)^{\underline i}[x^n]\exp(G(x))*\frac{(F(x)/x)^i}{i!}
F(x)=i≥2∑2xi=2(1−x)x2G(x)=i≥2∑2∗ixians=n!i=0∑n(i+nm)[xi+n](i+n)!exp(G(x))∗i!F(x)i=n!mni=0∑n(m−n)i[xn]exp(G(x))∗i!(F(x)/x)i
可以先求出
[
x
t
]
∑
i
(
F
(
x
)
/
x
)
i
i
!
=
[
x
t
]
∑
i
x
2
(
1
−
x
)
i
!
=
∑
i
(
t
−
1
i
−
1
)
1
2
i
i
!
[x^t]\sum_i\frac{(F(x)/x)^i}{i!}=[x^t]\sum_i\frac{x}{2(1-x)i!}=\sum_i\binom{t-1}{i-1}\frac{1}{2^ii!}
[xt]i∑i!(F(x)/x)i=[xt]i∑2(1−x)i!x=i∑(i−1t−1)2ii!1
可以直接卷积,前面的
exp
\exp
exp 考虑用
d
p
dp
dp 转移,和
b
z
o
j
5481
bzoj5481
bzoj5481 一样,可以
O
(
n
)
O(n)
O(n) 维护前缀和做
于是只用一次多项式乘法就做完了
C
o
d
e
Code
Code