举报了,标题与内容严重不符
烷基计数
注意到烷基相当于是有根树,这样会简单很多
我们用
b
u
r
n
s
i
d
e
burnside
burnside 引理处理子树同构,列出式子就是
F
(
z
)
=
z
[
F
(
z
)
3
+
3
F
(
z
2
)
F
(
z
)
+
2
F
(
z
3
)
6
]
+
1
F(z)=z\Big[\frac{F(z)^3+3F(z^2)F(z)+2F(z^3)}{6}\Big]+1
F(z)=z[6F(z)3+3F(z2)F(z)+2F(z3)]+1
考虑倍增,那么
z
,
z
F
(
z
2
)
,
z
F
(
z
3
)
z,zF(z^2),zF(z^3)
z,zF(z2),zF(z3) 在当前环节均是已知项,牛顿迭代就可以了
烯烃计数
我们枚举双键的位置,设两边的
g
f
gf
gf 为
F
(
z
)
F(z)
F(z),那么答案就是
F
(
z
)
2
+
F
(
z
2
)
2
\frac{F(z)^2+F(z^2)}{2}
2F(z)2+F(z2)
我们用
G
(
z
)
G(z)
G(z) 表示烷基的生成函数,那么
F
(
z
)
=
G
(
z
)
2
+
G
(
z
2
)
2
F(z)=\frac{G(z)^2+G(z^2)}{2}
F(z)=2G(z)2+G(z2)
苯的同系物计数
同样设
G
(
z
)
G(z)
G(z) 表示烷基的生成函数,然后令
G
(
z
)
←
z
G
(
z
)
G(z)\leftarrow zG(z)
G(z)←zG(z)
苯环有 6 种置换,枚举每一种置换
F
(
z
)
=
G
(
z
)
6
+
2
G
(
z
6
)
+
2
G
(
z
3
)
2
+
G
(
z
2
)
3
6
F(z)=\frac{G(z)^6+2G(z^6)+2G(z^3)^2+G(z^2)^3}{6}
F(z)=6G(z)6+2G(z6)+2G(z3)2+G(z2)3
烷烃计数
可以发现,上面 3 中有机物的计数都可以看做 “有根” 的情况,这是较为简单的
而烷烃计数就是无根的情况,这是较为麻烦的,我们枚举重心统计,将不是重心的容斥掉
令
G
0
(
z
)
G_0(z)
G0(z) 表示
G
(
z
)
m
o
d
z
⌊
n
2
⌋
+
1
G(z)\mod z^{\lfloor\frac{n}{2}\rfloor+1}
G(z)modz⌊2n⌋+1
F
(
z
)
=
z
[
G
(
z
)
4
+
8
G
(
z
3
)
G
(
z
)
+
3
G
(
z
2
)
2
+
6
G
(
z
2
)
G
(
z
)
2
+
6
G
(
z
4
)
24
]
−
∑
i
=
⌊
n
2
⌋
+
1
n
−
1
[
z
i
]
G
(
z
)
[
z
n
−
i
]
G
(
z
)
−
[
2
∣
n
]
(
[
z
n
2
]
G
(
z
)
2
)
F(z)=z\Big[\frac{G(z)^4+8G(z^3)G(z)+3G(z^2)^2+6G(z^2)G(z)^2+6G(z^4)}{24}\Big]\\-\sum_{i=\lfloor\frac{n}{2}\rfloor+1}^{n-1}[z^i]G(z)[z^{n-i}]G(z)-[2\mid n]\binom{[z^{\frac{n}{2}}]G(z)}{2}
F(z)=z[24G(z)4+8G(z3)G(z)+3G(z2)2+6G(z2)G(z)2+6G(z4)]−∑i=⌊2n⌋+1n−1[zi]G(z)[zn−i]G(z)−[2∣n](2[z2n]G(z))
非常遗憾的是,这种方法是
O
(
n
2
)
O(n^2)
O(n2) 的
我们需要寻找一种更高妙的解法
一种思路是我们直接算出
F
(
z
)
=
z
[
G
(
z
)
4
+
8
G
(
z
3
)
G
(
z
)
+
3
G
(
z
2
)
2
+
6
G
(
z
2
)
G
(
z
)
2
+
6
G
(
z
4
)
24
]
F(z)=z\Big[\frac{G(z)^4+8G(z^3)G(z)+3G(z^2)^2+6G(z^2)G(z)^2+6G(z^4)}{24}\Big]
F(z)=z[24G(z)4+8G(z3)G(z)+3G(z2)2+6G(z2)G(z)2+6G(z4)],最后除以
n
n
n,但显然是错误的,因为我们只会统计 “等价类个数” 次,这咋整?
(两个点等价当且仅当分别删去这两个点后的森林相同)
考虑重心作为根,十分
a
m
a
z
i
n
g
amazing
amazing 的是除重心之外的两个点若在一个等价类则其父亲边也在一个等价类
当重心为 1 个点或重心有两个点但两边不同构时,我们有 "点等价类个数” - “边等价类个数” = 1
否则我们有 "点等价类个数” - “边等价类个数” = 0,故可以写出答案
F
(
z
)
=
z
[
G
(
z
)
4
+
8
G
(
z
3
)
G
(
z
)
+
3
G
(
z
2
)
2
+
6
G
(
z
2
)
G
(
z
)
2
+
6
G
(
z
4
)
24
]
−
[
(
G
(
z
)
−
1
)
2
+
(
G
(
z
2
)
−
1
)
2
]
+
G
(
z
2
)
F(z)=z\Big[\frac{G(z)^4+8G(z^3)G(z)+3G(z^2)^2+6G(z^2)G(z)^2+6G(z^4)}{24}\Big]-\Big[\frac{(G(z)-1)^2+(G(z^2)-1)}{2}\Big]+G(z^2)
F(z)=z[24G(z)4+8G(z3)G(z)+3G(z2)2+6G(z2)G(z)2+6G(z4)]−[2(G(z)−1)2+(G(z2)−1)]+G(z2)
Upd:
芳香烃计数:
芳香烃:含有一个或多个苯环的烃
我们类似烷烃计数,先搞一个 “芳香基” 计数,这个是很容易的
F
(
z
)
=
z
[
F
(
z
)
3
+
3
F
(
z
2
)
F
(
z
)
+
2
F
(
z
3
)
6
]
+
z
[
(
z
F
(
z
)
)
5
+
(
z
2
F
(
z
2
)
)
2
F
(
z
)
2
]
F(z)=z\Big[\frac{F(z)^3+3F(z^2)F(z)+2F(z^3)}{6}\Big]+z\Big[\frac{(zF(z))^5+(z^2F(z^2))^2F(z)}{2}\Big]
F(z)=z[6F(z)3+3F(z2)F(z)+2F(z3)]+z[2(zF(z))5+(z2F(z2))2F(z)]
这也能牛顿迭代 /jk
接着我们枚举重心
若
n
n
n 为奇数
若重心为苯环:保留
z
F
(
z
)
zF(z)
zF(z) 前
⌊
n
2
⌋
\lfloor\frac{n}{2}\rfloor
⌊2n⌋ 项
G
(
z
)
=
z
F
(
z
)
6
+
2
F
(
z
6
)
+
2
F
(
z
3
)
2
+
F
(
z
2
)
3
6
G(z)=z\frac{F(z)^6+2F(z^6)+2F(z^3)^2+F(z^2)^3}{6}
G(z)=z6F(z)6+2F(z6)+2F(z3)2+F(z2)3
若重心为碳原子:保留
F
(
z
)
F(z)
F(z) 前
⌊
n
2
⌋
\lfloor\frac{n}{2}\rfloor
⌊2n⌋ 项
G
(
z
)
=
z
[
F
(
z
)
4
+
8
F
(
z
3
)
F
(
z
)
+
3
F
(
z
2
)
2
+
6
F
(
z
2
)
F
(
z
)
2
+
6
F
(
z
4
)
24
]
G(z)=z\Big[\frac{F(z)^4+8F(z^3)F(z)+3F(z^2)^2+6F(z^2)F(z)^2+6F(z^4)}{24}\Big]
G(z)=z[24F(z)4+8F(z3)F(z)+3F(z2)2+6F(z2)F(z)2+6F(z4)]
否则
若重心为苯环:保留
z
F
(
z
)
zF(z)
zF(z) 前
n
2
−
1
\frac{n}{2}-1
2n−1 项
若重心为碳原子:保留
F
(
z
)
F(z)
F(z) 的前
n
2
−
1
\frac{n}{2}-1
2n−1 项
若重心为碳键:那么就是
G
(
z
)
=
[
z
n
2
]
F
(
z
)
2
+
[
z
n
2
]
F
(
z
)
2
G(z)=\frac{[z^{\frac{n}{2}}]F(z)^2+[z^{\frac{n}{2}}]F(z)}{2}
G(z)=2[z2n]F(z)2+[z2n]F(z)
这是单次询问
O
(
n
log
n
)
O(n\log n)
O(nlogn) 的,不知道能不能优化
中间有些是自己瞎编的,如果有错欢迎教育博主
如果有更好的
i
d
e
a
idea
idea 欢迎交流