有机化学基础

举报了,标题与内容严重不符

烷基计数
注意到烷基相当于是有根树,这样会简单很多
我们用 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)modz2n+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+1n1[zi]G(z)[zni]G(z)[2n](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 2n1
若重心为碳原子:保留 F ( z ) F(z) F(z) 的前 n 2 − 1 \frac{n}{2}-1 2n1
若重心为碳键:那么就是 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 欢迎交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值