• 2024-04-20《算法竞赛进阶指南》 第六章 291. 蒙德里安的梦想 状态压缩DP
    https://www.acwing.com/problem/content/293/求把N×M的棋盘分割成若干个1×2的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数N和M。当输入用例N=0
  • 2024-04-01ACwing291. 蒙德里安的梦想
    注意:这道题不能像小国王那样,预处理出一个useful数组,存储所有可用的状态:for(inti=2;i<=m+1;i++)for(intj=0;j<1<<n;j++){f[i&1][j]=0;for(intk:Trans[j])f[i][j]+=f[(i-1)][k];}
  • 2023-05-14蒙德里安的梦想
    蒙德里安的梦想如果横的放置确定了,那么纵向的肯定也确定了。所以只需要计算横着的方案数即可。考虑使用\(f[i][j]\)表示当前已经处理到了第\(i\)列,状态为\(j\)(状态表示这一列的每个位置是否被长方形占据了)。然后转移的话可以从上一列的许多状态中转移,但是需要满足两个条件
  • 2023-04-03蒙德里安的梦想
    蒙德里安的梦想题目描述求把$N×M$的棋盘分割成若干个$1\times2$的长方形,有多少种方案。例如当$N=2,M=4$时,共有\(5\)种方案。当\(N=2,M=3\)时,共有\(3\)种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数\(N\)和\(M
  • 2023-03-16Acwing 291. 蒙德里安的梦想
     状态压缩DP当把所有横向格子放完后,纵向方格的排放方案只有一种。因此整个划分方案数与横着摆放方格的方案数相同。f[i,j]表示,目前摆放第i列,j是二进制数(状态是整数,看
  • 2023-02-25蒙德里安的梦想
    #include<bits/stdc++.h>usingnamespacestd;constintN=15,M=1<<N;intn,m;boolst[M];longlongf[N][M];voidinit(){for(inti=0;i<1<<n;i++){
  • 2022-12-26AcWing291.蒙德里安的梦想题解
    题解:蒙德里安的梦想注:本题解内容简陋,多有不周,敬请谅解。如果有问题请在评论区留言。谢谢。由于作者能力有限,这篇题解不会给出太严谨的证明,只是旨在帮助大家更好地理解此
  • 2022-12-07蒙德里安的梦想
    题目链接:https://www.acwing.com/problem/content/description/293/题目描述求把N×M的棋盘分割成若干个1×2的的长方形,有多少种方案。例如当N=2,M=4时,共有5种
  • 2022-11-03291 蒙德里安的梦想
    f[i][j]表示第i列有来自上一列的j(用二进制表示有几行就有几位,1表示突起,0表示没有突起)的突起时有几种摆放方式在确定几行几列的图之后,先预处理st数组,这个数组是确定每一列