有一種圖形叫做五角形圈。乙個五角形圈的中心有1個由n個頂點和n條邊組成的圈。在中心的這個n邊圈的每一條邊同時也是某乙個五角形的一條邊,一共有n個不同的五角形。這些五角形只在五角形圈的中心的圈上有公共的頂點。如圖0所示是乙個4-五角形圈。
現在給定乙個n五角形圈,你的任務就是求出n五角形圈的不同生成樹的數目。還記得什麼是圖的生成樹嗎?乙個圖的生成樹是保留原圖的所有頂點以及頂點的數目減去一這麼多條邊,從而生成的一棵樹。
注意:在給定的n五角形圈中所有頂點均視為不同的頂點。
輸入包含多組測試資料。第一行包含乙個正整數t,表示測試資料數目。每組測試資料報含乙個整數n( 2<=n<=100),代表你需要求解的五角形圈中心的邊數。
對每一組測試資料,輸出一行包含乙個整數x,表示n五角形圈的生成樹數目模2007之後的結果。12
40正解:矩陣樹定理或組合數學。
首先用矩陣樹定理打表,發現$ans=4*n*5^$,於是愉快$ac$
下面給出嚴謹證明:(來自ljh2000神犇:
考慮如果n
'>$n$
個五邊形每個斷掉一條邊就會得到乙個基環外向樹,此時還需要斷掉一條邊,這意味著$n$n
'>
個五邊形中就有乙個五邊形要斷掉兩條邊,並且容易想到有一條必然是在中心的那個$n$
邊形上,那麼就可以用組合數學來表示了。從$n$n
'>
n'>n
'>n
'>個五邊形中選取乙個是選兩條邊的,這個五邊形在**$n$n
'>
邊形上那條邊必選,那麼只需在剩下$4$4
'>
條邊再斷一條即可,而剩下的$n-1$
個五邊形都是隨便斷一條即可,總方案數就是4∗n
∗5n−
1'>$4*n*5^$
n'>n
'>n
'>n
'>4
'>n−1
'>。
1//it is made by wfj_2048~
2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include
14#define inf (1<<30)
15#define rhl (2007)
16#define eps (1e-9)
17#define il inline
18#define rg register
19#define ll long long
20#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
2122
using
namespace
std;
2324
int d[410][410],g[410][410],bin[110
],n,n;
25double a[410][410
],ans;
2627 il int
gi()
3435 il void insert(rg int x,rg int y)
3637 il void
gauss()
48if (fabs(a[i][i])0; return; } ans*=a[i][i];49}
50if (ans<0) ans=-ans; return;51
}5253/*
54il void work()
65for (rg int i=1;i<=n;++i)
66for (rg int j=1;j<=n;++j) a[i][j]=d[i][j]-g[i][j];
67gauss(); printf("%d\n",(int)ans); return;68}
69*/
7071
intmain()
bzoj2467 中山市選2010 生成樹
題目大意 有一種圖形叫做五角形圈。乙個五角形圈的中心有1個由n個頂點和n條邊組成的圈。在中心的這個n邊圈的每一條邊同時也是某乙個五角形的一條邊,一共有n個不同的五角形。這些五角形只在五角形圈的中心的圈上有公共的頂點。如圖0所示是乙個4 五角形圈。現在給定乙個n五角形圈,你的任務就是求出n五角形圈的不...
BZOJ 2467 中山市選2010 生成樹
有一種圖形叫做五角形圈。乙個五角形圈的中心有1個由n個頂點和n條邊組成的圈。在中心的這個n邊圈的每一條邊同時也是某乙個五角形的一條邊,一共有n個不同的五角形。這些五角形只在五角形圈的中心的圈上有公共的頂點。如圖0所示是乙個4 五角形圈。現在給定乙個n五角形圈,你的任務就是求出n五角形圈的不同生成樹的...
bzoj2466 中山市選2009 樹
同上一題。應該可以樹形dp,然而我不會。include include include include includeusing namespace std define rep i,s,t for int i s i t i define dwn i,s,t for int i s i t i d...