分析:
我其實想到鏈狀怎麼做了,沒有往下多想。一直想用組合做。
最後看到clj的題解,才發現我已經想對了一半。。。
對於乙個鏈來說,設dp[i]為長度為i的鏈和乙個「中心」的生成樹數量,可以dp之。。
然後考慮環,列舉1節點所在的環的長度,設為len,那麼這個環的位置有len種情況,這個環與中心連線也有len種情況,那麼這個節點對答案的貢獻就是len^2*dp[n-len]。。
**:view code
1 #include 2 #include 3 #include 4 #include 5 #include 67#define n 5089
using
namespace
std;
1011
struct
bign
12dp[110
],ans;
1516
intn;
1718 inline bign operator +(bign a,bign b)
1929
while(jin) c.a[++c.a[0]]=jin%10000,jin/=10000;30
return
c;31}32
33 inline bign operator *(bign a,int
b)34
43 c.a[0]=a.a[0
];44
while(jin) c.a[++c.a[0]]=jin%10000,jin/=10000;45
return
c;46}47
48void
prev()
495859}
6061
void prt(const bign &a)
6267
68int
main()
69
FJOI2007 輪狀病毒
提交傳送門 就是公式嘛 f i f i 1 3 f i 2 description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀...
FJOI2007 輪狀病毒
輪狀病毒有很多變種。許多輪狀病毒都是由乙個輪狀基產生。乙個n輪狀基由圓環上n個不同的基原子和圓心的乙個核原子構成。2個原子之間的邊表示這2個原子之間的資訊通道,如圖1。n輪狀病毒的產生規律是在n輪狀基中刪除若干邊,使各原子之間有唯一一條資訊通道。例如,共有16個不同的3輪狀病毒,入圖2所示。給定n ...
1002 FJOI2007 輪狀病毒
輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不 同的3輪狀病毒...