UVA 580 危險的組合(數論 計數原理)

2021-10-01 17:41:51 字數 477 閱讀 3748

設答案為f(n),以3個u為分類依據,讓i,i+1,i+2成為3個u,這樣i前面的可以不需要3個u,但是有乙個問題,如果前i-1為u,那麼i-1,i,i+1還是可以組成3個u,這樣就不符合從第i個開始為至少3個u了,所以我們要剔除掉這種情況,可以強制讓i-1為l,這樣把i-1前面的可排列數量和i+2後面的可排列數量相乘就可以得到正確答案,接下來看邊界,f[0],[1],[2]=0,因為不滿足至少3個u的定義。

此外,n個盒子「沒有3個u放在一起的」方案數為g(n)=2^n-f(n),可以寫出關係式f(n)=2^(n-3)+

f(n)裡的2^(n-3)為當u在第乙個位置時,不要遺漏這種情況,因為後面的表示式是從2開始的。

#includeusing namespace std;

int f[31];

int main()}

while(scanf("%d",&n) && n)

}

遞推,計數(危險的組合,uva 580)

dp i 是n i時的答案。此時有很多決策,即第乙個uuu放 顯然第乙個uuu最小可以從1開始放,最大可以從i 2開始放。第乙個uuu前面必須放l,然後l前面不能有uuu,因此前面的方案數為2 j dp j 後面隨便放。後面乘以前面就是這個決策的總方案數。所有決策的和加起來就是答案。includeu...

Uva 580 排列組合

我發現數學還是很有用的 o 想了一節課才推出式子,數學競賽的一會就想出來了orz.要看排列組合的書了.推導過程有時間在寫估計不會了 code include include include include include include include define fo i,a,b for int...

數論基礎之組合數 計數問題

一.組合數 問題引入 現在有 n 個球,取其中的 k 個球,問一共有多少 種方式?答案 公式直觀解釋 我們考慮有順序地取出 k 個球 第一次有 n 種選擇,第二次有 n 1 種 選擇,第 k 次有 n k 1 種選擇。故一共有 種方案數 但如果不計算順序的話,那麼對於一種方案,其實有 k 種 不同的...