洛谷P1990 覆蓋牆壁(遞推)

2021-10-06 17:51:26 字數 850 閱讀 1335

開始刷kuangbin數學專題發現沒有數學基礎完全刷不動…

於是決定先把洛谷的一些基礎刷完

然而數學&dp方面就學了一點點,基礎實在太爛

補題補題補題

有 i 型和 l 型的磚,問鋪滿2*n的牆壁有多少種方法

典型的遞推

f[n]表示剛好填滿第n列的牆壁的方法數;

g[n]表示第n-1列已經被填了乙個情況下,再填上 i 或者 l磚的方法數量

考慮兩種情況:

第一種情況,剛好填滿第n列的牆壁,有直接填上 i 或者n-1列剛好有乙個已經填了,就填上l,由於l瓷磚可以旋轉,所以有兩種放法

f[n]=f[n-1]+f[n-2]+g[n-2]x2;

第二種情況,第n-1列的牆壁已經填好了乙個,如果填乙個 i 型的話第n列就還是空了乙個,填乙個l就滿上了

g[n]=g[n-1]+f[n-1]

code:

#include

using

namespace std;

#define int long long

int f[

1000005

],n;

int g[

1000000];

const

int mod=

1e4;

signed

main()

cout<

%mod;

return0;

}

洛谷 P1990 覆蓋牆壁

你有乙個長為n寬為2的牆壁,給你兩種磚頭 乙個長2寬1,另乙個是l型覆蓋3個單元的磚頭。如下圖 0 0 0 00磚頭可以旋轉,兩種磚頭可以無限制提供。你的任務是計算用這兩種來覆蓋n 2的牆壁的覆蓋方法。例如乙個2 3的牆可以有5種覆蓋方法,如下 012 002 011 001 011 012 112...

洛谷 P1990 覆蓋牆壁

你有乙個長為n寬為2的牆壁,給你兩種磚頭 乙個長2寬1,另乙個是l型覆蓋3個單元的磚頭。如下圖 0 0 0 00 磚頭可以旋轉,兩種磚頭可以無限制提供。你的任務是計算用這兩種來覆蓋n 2的牆壁的覆蓋方法。例如乙個2 3的牆可以有5種覆蓋方法,如下 012 002 011 001 011 012 11...

洛谷 1990 覆蓋牆壁 遞推

題目描述 你有乙個長為n寬為2的牆壁,給你兩種磚頭 乙個長2寬1,另乙個是l型覆蓋3個單元的磚頭。如下圖 0 00 00 磚頭可以旋轉,兩種磚頭可以無限制提供。你的任務是計算用這兩種來覆蓋n2的牆壁的覆蓋方法。例如乙個23的牆可以有5種覆蓋方法,如下 012 002 011 001 011 012 ...