BZOJ FJOI2007 輪狀病毒

2022-05-24 04:18:07 字數 941 閱讀 5125

分析:

我其實想到鏈狀怎麼做了,沒有往下多想。一直想用組合做。

最後看到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 6

7#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輪狀病毒...