HihoCoder 1568 不一定合法括號序列

2022-08-31 03:54:07 字數 866 閱讀 9231

題目鏈結

描述

我們定義長度為2n的不一定合法括號序列為左右括號個數均為n的序列。

我們定義不一定合法括號序列的bad指數為這個序列當中沒有對應右括號的左括號的個數。

給出n,k。求bad指數為k的長度為2n的不一定合法括號序列的個數。

由於答案很大,你只需要輸出對109 + 7取餘的結果。

輸入一行兩個整數n,k

對於30%的資料 1 ≤ k ≤ n ≤ 10

對於100%的資料 1 ≤ k ≤ n ≤ 300

輸出乙個整數表示答案。

樣例輸入

2 1樣例輸出

3

動態規劃方法,三元組(i,j,k)刻畫狀態,三元組表示考慮到第i個位置,已經出現了左括號j個,未匹配的左括號k個。

轉移方程:

左括號 ( 壞數+1

dp(i+1,j+1,k+1) = dp(i+1,j+1,k+1) + dp(i,j,k)

右括號 ( 壞數-1

dp(i+1,j,k-1) = dp(i+1,j,k-1) + dp(i,j,k)

#include #include #include #include using namespace std;

const int n = 305;

const int mod = 1e9 + 7;

int dp[n*2][n][n];

int n,k;

int main()

dp[i][j][s] %= mod;*/}

}}

printf("%d\n", dp[m][n][k]);

return 0;

}

hihoCoder 骨牌覆蓋問題 一

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 ...

hihoCoder 骨牌覆蓋問題 一

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 ...

hihoCoder每週一題

時間限制 10000ms 單點時限 1000ms include include include include includeusing namespace std int n,m define max 26 struct trie trie void createtrie char str el...