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方格。那麼擺放的小方格方案數等價於橫著擺放的小方格方案數,因為當橫著合法擺放的方格確定後,豎著擺放的方式就已經確定了,直接內嵌。他的資料範圍為...