1002 FJOI2007 輪狀病毒

2022-05-03 13:03:29 字數 1028 閱讀 1857

輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子

和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示

n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不

同的3輪狀病毒,如下圖所示

現給定n(n<=100),程式設計計算有多少個不同的n輪狀病毒

第一行有1個正整數n

計算出的不同的n輪狀病毒數輸出316

//

一開始非常nb地推了個組合數的公式,但是要寫高精階乘 高精除高精,就沒寫

//然後就寫longlong看看能過幾個點

//a掉乙個點,和題解對了下,發現只有n<=3的時候是對的

//不會別的做法,看了題解。

//有矩陣樹定理的做法和遞推的做法

//感覺遞推的比較好寫,不用寫高精乘法

//將n<=5的ans寫出來,可以發現f[n]=3*f[n-1]-f[n-2]+2

//其實上面那個式子是個斐波那契的變形,整理一下可以得到這個式子

//不可避免地要寫高精

#include

#include

#include

#include

using

namespace

std;

intn;

int ans[105][1005

];int len[105

];int mul[1005

];void calc(int

x)

if(cnt)

mul[++l]=cnt;

cnt=2

;

for(int i=1;i<=l;++i)

if(cnt)

ans[x][l+1]=cnt,len[x]=l+1

;

else

len[x]=l;

return;}

intmain()

FJOI2007 bzoj1002 輪狀病毒

description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有...

BZOJ 1002 FJOI2007 輪狀病毒

1002 fjoi2007 輪狀病毒 time limit 1 sec memory limit 162 mb description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資...

BZOJ1002 FJOI2007 輪狀病毒

標籤 高精度,數學 description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一...