組合數學 牡牛和牝牛

2021-10-02 18:35:02 字數 1032 閱讀 3635

約翰要帶 n 只牛去參加集會裡的展示活動,這些牛可以是牡牛,也可以是牝牛。

牛們要站成一排,但是牡牛是好鬥的,為了避免牡牛鬧出亂子,約翰決定任意兩隻牡牛之間至少要有 k 只牝牛。

請計算一共有多少種排隊的方法,所有牡牛可以看成是相同的,所有牝牛也一樣,答案對 5000011 取模。

輸入格式

一行,輸入兩個整數 n 和 k。

輸出格式

乙個整數,表示排隊的方法數。

資料範圍

1 ≤n

≤105

1≤n≤10^5

1≤n≤10

5,0 ≤k

<

n0≤k0≤

k<

n輸入樣例:

4 2輸出樣例:

6樣例解釋

6 種方法分別是:牝牝牝牝,牡牝牝牝,牝牡牝牝,牝牝牡牝,牝牝牝牡,牡牝牝牡。

感覺從此做組合數學有了新的思路。因為組合數學也是遞推關係。所以我們用dp的方法來推。我們f(i

)f(i)

f(i)

代表我們長度為i並且以1結尾的字串的方案數。我們這裡把牛當成0和1來看。

顯然我們第i個位置放了1,那麼最近的乙個放1的位置就是i-k-1直到0都是可以放1的,第0個位置放1就代表這個序列不包含1。這裡看來我們每個位置放1的方案數加起來就可以了。但是資料是105

10^5

105n方顯然是不可以的,考慮題目中是字首和的形式,所以我們邊記錄邊加字首和就可以了。

#include

//#define int long long

using

namespace std;

const

int n=

100010

;const

int mod=

5000011

;int n,k;

int f[n]

,s[n]

;int

main()

cout<

}

組合計數 牡牛和牝牛

約翰要帶 nn 只牛去參加集會裡的展示活動,這些牛可以是牡牛,也可以是牝牛。牛們要站成一排,但是牡牛是好鬥的,為了避免牡牛鬧出亂子,約翰決定任意兩隻牡牛之間至少要有 kk 只牝牛。請計算一共有多少種排隊的方法,所有牡牛可以看成是相同的,所有牝牛也一樣,答案對 50000115000011 取模。輸入...

bzoj 3398 牡牛和牝牛

牝 pin 4聲 母的意思。牡 mu 3聲 公的意思。看到這些字我直接愣了,其實放在牝雞司晨和牡蠣這兩個詞裡我絕對能認出來。是不是該去頹語文了?這道題f i 表示最後乙個是公牛的方案數,sigma f j j問題是hzwer用了奇怪的排列組合。這道題可以用隔板法,設abcd是放公牛的位置,那麼a,b...

BZOJ3398 牡牛和牝牛

time limit 1 sec memory limit 128 mb submit 440 solved 301 約翰要帶n 1 n 100000 只牛去參加集會裡的展示活動,這些牛可以是牡牛,也可以是牝牛 牛們要站成一排 但是牡牛是好鬥的,為了避免牡牛鬧出亂子,約翰決定任意兩隻牡牛之間至少要有...