滿足條件的01序列

2021-10-17 14:43:34 字數 1495 閱讀 8353

題目連線

給定n個0和n個1,它們將按照某種順序排成長度為2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0的個數都不少於1的個數的序列有多少個。

輸出的答案對1e9+7取模。

輸入格式

共一行,包含整數n。

輸出格式

共一行,包含乙個整數,表示答案。

資料範圍

1≤n≤1e5

輸入樣例:

3輸出樣例:

5

分析:這道題題意較為容易理解,計算滿足任意字首0的次數不小於1的序列個數,將這個問題轉化為組合數問題就是在2n步驟中選擇滿足條件的n步來計算數量,那麼總的序列個數就是c2n

nc_^

c2nn​。

再找出滿足條件的序列次數,這裡用到了卡特蘭數

分析問題,以n=6

n=6n=

6 為例,則總的方案數可以看作從(0,0)點到(6,6)的路徑數,0為向右走,1為向上走。

滿足條件的路徑數為不經過紅顏色邊

任何經過紅顏色邊的路徑,對紅線的軸對稱可以走到(5,7)這個點,反過來,任何到達(5,7)的路徑都對應一條不滿足條件(字首序列中0的個數都不少於1的個數)的路徑。

因此,這道題的結果就可以寫成(c2

nn−c

2nn−

1)%m

od=c

2nnn

+1%m

od(c_^-c_^)\%mod=\frac^}\%mod

(c2nn​

−c2n

n−1​

)%mo

d=n+

1c2n

n​​%

mod,除法運算可以用逆元來轉化成乘法運算。

**如下:

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int mod=

1e9+7;

intqmi

(int a,

int b)

return res;

}intc(

int a,

int b)

return res;

}int

main()

演算法題 滿足條件的01序列(Python)

給定n個0和n個1,它們將按照某種順序排成長度為2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0的個數都不少於1的個數的序列有多少個。輸出的答案對10 9 7取模。輸入格式 共一行,包含整數n。輸出格式 共一行,包含乙個整數,表示答案。資料範圍 1 n 10 5 輸入樣例 3輸出樣例...

滿足條件的正整數序列

問題描述 小明想知道,滿足以下條件的正整數序列的數量 第一項為 n 第二項不超過 n 從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 每一行包含乙個整數n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。樣例輸入 ...

Python補充01 序列的方法

在快速教程中,我們了解了最基本的序列 sequence 回憶一下,序列包含有定值表 tuple 和表 list 此外,字串 string 是一種特殊的定值表。表的元素可以更改,定值表一旦建立,其元素不可更改。任何的序列都可以引用其中的元素 item s為乙個序列 len s 返回 序列中包含元素的個...