洛谷 1990 覆蓋牆壁 遞推

2021-10-04 21:03:14 字數 1064 閱讀 3842

題目描述

你有乙個長為n寬為2的牆壁,給你兩種磚頭:乙個長2寬1,另乙個是l型覆蓋3個單元的磚頭。如下圖:

0 00 00

磚頭可以旋轉,兩種磚頭可以無限制提供。你的任務是計算用這兩種來覆蓋n2的牆壁的覆蓋方法。例如乙個23的牆可以有5種覆蓋方法,如下:

012 002 011 001 011

012 112 022 011 001

注意可以使用兩種磚頭混合起來覆蓋,如2*4的牆可以這樣覆蓋:

0112

0012

給定n,要求計算2n的牆壁的覆蓋方法。由於結果很大,所以只要求輸出最後4位。例如213的覆蓋方法為13465,只需輸出3465即可。如果答案少於4位,就直接輸出就可以,不用加0,如n=3,時輸出5。

輸入格式

乙個整數n(1<=n<=1000000),表示牆壁的長。

輸出格式

輸出覆蓋方法的最後4位,如果不足4位就輸出整個答案。

輸入輸出樣例

輸入 #1複製

13輸出 #1複製

3465

dp[i][j]表示第i列的第j中狀態

j=0時,代表第i列已滿

j=1時,代表第i列差乙個

分兩種情況,根據之前資料進行遞推,注意不要漏掉情況

#include

using namespace std;

typedef

long

long ll;

const

long

long mod =

1e9+7;

const

int inf =

0x3f3f3f3f

;const

double pi =

3.141592

;const

int e =

1e6;

ll dp[e +5]

[2];

intmain()

cout << dp[n][0

]%10000

<< endl;

return0;

}

洛谷P1990 覆蓋牆壁(遞推)

開始刷kuangbin數學專題發現沒有數學基礎完全刷不動 於是決定先把洛谷的一些基礎刷完 然而數學 dp方面就學了一點點,基礎實在太爛 補題補題補題 有 i 型和 l 型的磚,問鋪滿2 n的牆壁有多少種方法 典型的遞推 f n 表示剛好填滿第n列的牆壁的方法數 g n 表示第n 1列已經被填了乙個情...

洛谷 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...