盒子裏有n塊磚,每塊的顏色可能爲藍色或紅色。
執行m次三步操做:
1.從盒子裏隨便拿走一塊磚
2.放入一塊藍磚和紅磚到盒子裏
3.從盒子裏隨便拿走一塊磚spa
給定n,m
問拿出來的磚,可能有多少種不一樣的顏色序列。class
n,m<=3000統計
容易想到一個dp,
設f[i][j]表示已經執行了i次的操做,而後目前盒子裏有j塊藍磚,和n-j塊紅磚。
共有四種轉移,分別是一次操做拿走的磚頭爲紅紅、紅藍、藍紅、藍藍。
邊界爲f[0][0..n]=1math
而後就會發現算重了,
這是由於不一樣的顏色序列可能會有不一樣的起始藍磚數。顏色
那麼咱們對於一個顏色序列,咱們只在它的起始藍磚數最小的場合統計。
對於最小的起始藍磚數,m次操做過程當中必定有一時刻藍磚數爲0。
由於若是沒有,說明起始藍磚數還能夠減去整個過程當中的最小藍磚數。
而後只要給f設多一維0/1表示,執行了i次操做後,有沒有通過藍磚數爲0的時刻。
答案就是\(\sum f[m][i][0]\)