蒙德里安的夢想

2022-07-12 00:27:13 字數 844 閱讀 9437

acwing

rua,可以分割棋盤,但是我們發現分割棋盤之後會有好多長方形被攔腰折斷,所以可以沒被折斷的看做 0,折斷的看做 1,那麼下一行中那些折斷的就必須看做 0, 剩下的可以是1 也可以是 0。

用 \(f_\) 表示第 i 行的形態 為 j 時,前 i 行的分割方案的總數。

第 \(i-1\) 的形態 k 轉移到第 i 行的 j 形態,當且僅當:

我們可以 dp 求出 \([0, 2^m - 1]\) 內所有滿足「二進位制表示下每一段都是連續的0有偶數個」的整數,記錄下來。

不難發現

\[\displaystyle f_ = \sum_ f_

\]

#include #include #include #include #include #define ll long long

#define n 100010

#define m 2050

using namespace std;

const int mod = 1e9+7;

const int inf = 0x3f3f3f3f;

int n, m;

int sy[m]; ll f[20][m];

int read()

int main()

f[0][0] = 1;

for (int i = 1; i <= n; i++)

for (int j = 0; j < (1 << m); j++)

printf("%lld\n", f[n][0]);

n = read(), m = read();

} return 0;

}

蒙德里安的夢想

求把n m的棋盤分割成若干個1 2的的長方形,有多少種方案。例如當n 2,m 4時,共有5種方案。當n 2,m 3時,共有3種方案。如下圖所示 輸入格式 輸入包含多組測試用例。每組測試用例佔一行,包含兩個整數n和m。當輸入用例n 0,m 0時,表示輸入終止,且該用例無需處理。輸出格式 每個測試用例輸...

蒙德里安的夢想

求把nm的棋盤分割成若干個12的的長方形,有多少種方案。例如當n 2,m 4時,共有5種方案。當n 2,m 3時,共有3種方案。輸入格式 輸入包含多組測試用例。每組測試用例佔一行,包含兩個整數n和m。當輸入用例n 0,m 0時,表示輸入終止,且該用例無需處理。輸出格式 每個測試用例輸出乙個結果,每個...

AcWing , 蒙德里安的夢想

結果完整 就是將乙個n m的二維矩陣,分成若干個1 2的方格,有多少種分配方式 完全分配 可以對放置的方式進行模擬,先放置橫著的1 2方格,再放置豎著的2 1方格。那麼擺放的小方格方案數等價於橫著擺放的小方格方案數,因為當橫著合法擺放的方格確定後,豎著擺放的方式就已經確定了,直接內嵌。他的資料範圍為...