题目大意:用1∗2木块将给出的n∗m大小的矩阵填满的方法总数。
解题思路:插头dp的裸题,dp[i][s]表示第i块位置。而且该位置相应的行数的状态为s的时候的总情况数。0表示为竖放预留留的位置,1表示填上的位置。无论是竖放还是横放。而且第一位状态用滚动数组优化空间。
#include#include #include using namespace std;typedef long long ll;int n, m;ll dp[2][(1<<11)+5];int main () { while (scanf("%d%d", &n, &m) == 2) { int now = 0, pre = 1; if (n < m) swap(n, m); int e = (1<