1. 程式人生 > >【hdu2481】Toy,burnside引理+矩陣乘法

【hdu2481】Toy,burnside引理+矩陣乘法

傳送門
思路:
快把我做哭了TAT
從昨天上午開始想,搞了一下午有一個點沒有想明白
TA爺看過題後想了5min貌似就爆正解了TAT
下面我就來講一講~
一開始先想沒有置換情況下的方案數
手玩無果後打了表……
然後就是
F(1)=1,F(2)=5,F(n)=3×F(n1)F(n2)+2(n3)
mrazer:這不就是“輪狀病毒”嗎
咦好像真的是啊……
當時那道題我好像也是打表搞得啊……
說說比較好理解的一種證明
F(n)是帶環的方案數,即n號點可以連到1號點
f(n)是不帶環的方案數,即n號點不能連到1號點
f(n)={12×f(n1)+ni=2f(

ni)(n=0,1)(n2)
F(n)=ni=1i2×f(ni)
先來解釋一下F(n)
考慮把圖形外面的n條邊想象成分開的一段段
列舉第一個點的段的大小i(1~n),因為這個段是獨立的,想在整體中就必須向中心點連邊,所以再列舉這個段向中心點連邊的點,數量也是i
剩下的話就是遞迴問題了,不過要求剩下的段不能成環,就是f(ni)
f(n)的話,考慮前n-1個點已經排好了,加入第n個點使其仍然是樹,有三種選擇,把n直接連在n-1所在的段上,把n直接與中心點相連,把n連在n-1所在的段上並與中心點相連(也就意味著n-1所在的段形態確定,除n以外不與中心點相連),三種選擇的方案分別是f
(n1)
,f(n1),ni=2f(ni),最後一種相當於列舉n-1所在段的大小i(1-n),方案數就取決於剩下的n-1-i個點了
但我們發現上面的式子求解在n109下不適用,所以要化簡
f(n)(n3)化簡一下就成了這個樣子

f(n)=f(n1)+i=2n1f(i)
f(n1)=f(n2)+i=2n2f(i)
①-②,移項得
f(n)=3f(n1)f(n2)(n3)
(以下過程我寫的有些鬼畜,推薦由結論推出條件
i=n2ni2×f(ni)3(n1)22(n2)22=0
F(n)=i=1ni2×f(ni)i=n
2
n
i2×f(ni)+3(n1)2+2(n2)2+2

=i=1n3i2×f(ni)+3(n1)2+2(n2)2+2
ni3f(ni)=3(ni1)f(ni2)
=i=1n3i2×[3f