藍橋杯 2023年第九屆真題 搭積木

2021-10-10 05:36:21 字數 1938 閱讀 2150

[[藍橋杯][2023年第九屆真題]搭積木](
小明對搭積木非常感興趣。他的積木都是同樣大小的正立方體。

在搭積木時,小明選取 m 塊積木作為地基,將他們在桌子上一字排開,中間不留空隙,並稱其為第0層。

隨後,小明可以在上面擺放第1層,第2層,……,最多擺放至第n層。擺放積木必須遵循三條規則:

其中,小明不喜歡的位置都被標在了圖紙上。圖紙共有n行,從下至上的每一行分別對應積木的第1層至第n層。每一行都有m個字元,字元可能是『.』或『x』,其中『x』表示這個位置是小明不喜歡的。

現在,小明想要知道,共有多少種放置積木的方案。他找到了參加藍橋杯的你來幫他計算這個答案。

由於這個答案可能很大,你只需要回答這個答案對1000000007(十億零七)取模後的結果。

注意:地基上什麼都不放,也算作是方案之一種。

參考部落格

dp我們用到兩個函式:

check[i][j]:表示第i層前j個中有多少個『x』

dp[l][r] = v:表示當前層中的[l,r]的方法數是v

check其實就是字首和操作,對每一層進行字首和運算

我們規定積木從下到上分別是第n層,第n-1層,最上面是第一層

我們首先用check來更新最低層dp的值

然後從最低層開始向上傳遞,即從大區間列舉到小區間後得出的方法數

轉移方程是:

dp[l][r]+=dp[l-1][r]+dp[l][r+1]-dp[l-1][r+1]

因為我們的l和r分別是從兩端開始向內走,所以我們更新區間[時也是由外向內更新,當更新區間[l,r]時,我們已經的值[區間l-1][r]和區間[l][r+1]區間[l-1][r+1],因為dp[l-1][r]和dp[l][r+1]中包括的是[l-1,r+1]+[l,r]所以要減去

這樣的前提是[l,r]中沒有x,因為除了最低層,其他層塊的建立必須在下層的基礎上建成且必須連續,不能有空中樓閣。

如果有x,則dp[l][r] = 0

不好理解u1s1,慢慢悟一悟

反正就是,先求出最低層,然後依次向上,求出列舉每一塊區間,記錄答案

#include

using

namespace std;

#define mod 1000000007

typedef

long

long ll;

const

int maxn =

110;

ll dp[maxn]

[maxn]

;///dp[l][r]=v記錄的是當前層中的[l,r]的方法數為v(初始dp是dp[n][l][r])

///轉移為dp[l][r]+=dp[l-1][r]+dp[l][r+1]-dp[l-1][r+1](因為dp[l-1][r]和dp[l][r+1]中包括的是[l-1,r+1]+[l,r]所以要減去)

///由題意可知初始化為第n層的方法數,即從大區間列舉到小區間後得出的方法數

///轉移時若[l,r]中沒有x,則方法數為dp[l][r]+=dp[l-1][r]+dp[l][r+1]-dp[l-1][r+1],相當於向上傳遞,反之從這一層開始[l,r]區間的方法數就為0

int check[maxn]

[maxn]

;int

main()

}}ll ans=1;

///沒有放也是一種

for(

int i=

1;i<=m;i++)}

}for

(int t=n-

1;t>

0;t--

)else}}

}printf

("%lld\n"

,ans)

;return0;

}

藍橋杯 2023年第九屆真題 全球變暖

你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 它就會被淹...

藍橋杯 2023年第九屆真題 防禦力

還有兩題放在最後寫,不是說它難,而是它有問題。基本可以確定防禦力是錯了,答案沒有按照字典序排序。然後去知乎翻了一波往年的評價,發現那次比賽有三次勘誤,可能包括這個 因為也沒有人提到 採油這題無意中發現有人說了做法,但是其實是有缺陷的,雖然可以過藍橋杯的資料,但是構造了一組樣例把它hack了。所以可能...

藍橋杯 2023年第九屆真題 全球變暖 廣搜

你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 它就會被淹...