当前位置: 首页 > news >正文

30 ACwing 291 蒙德里安的梦想 题解

蒙德里安的梦想

题面

求把 \(N \times M\) 的棋盘分割成若干个 \(1 \times 2\) 的长方形,有多少种方案

例如当 \(N = 2, M = 4\) 时,共有 5 中方案。当 \(N = 2, M = 3\) 时,共有 3 种方案

2411_1.jpg|

\(1 \le N, M \le 11\)

题解

可以先转化一下题意,其实可以转化为放横着方块的合法方案数,如果横着的方块已经放好了,那么要将整个棋盘填满,放竖着的方块也只有一种方案

那么考虑两个问题

怎么判断一个已经放好横块的棋盘是否合法,怎么放横块?

我们放好横块后,只需要对于每一列看连续空格的个数是否都是偶数即可

可以这样放横块,设 \(f(i,j)\) 表示已经放好了前 \(i - 1\) 列,从 \(i - 1\) 列到第 \(i\) 列的横块的集合为 \(j\) 的方案数

因为只有 \(1 \times 2\) 的横块,所以我们只需要考虑 \(i - 2 \to i - 1\) 是如何放的,会不会影响到当前这列的状态

设当前状态为 \(j\) ,前面的状态为 \(k\) ,两个状态一定不能有交集,也就是 \(j \& k = 0\)

另外,如果 \(k, j\) 的状态都确定了,那么第 \(i - 1\) 列的状态也就确定了,又因为我们要保证每一列的连续空格数是否为偶数,所以我们还需要判断一下 \(j \mid k\) 这个状态

朴素写法是 \(O(n^24^n)\) 的,会TLE

所以我们加些预处理,具体的时间复杂度多少我也不知道,会很低

code

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>using namespace std;typedef long long ll;const int N = 13, M = (1 << 11) + 7;int n, m;
ll f[N][M];
bool st[M];
vector <int> fac[M];void solve () {memset (st, 0, sizeof st);for (int i = 0; i < (1 << n); i ++) {while (fac[i].size ()) fac[i].pop_back ();}//预处理出合法的匹配状态for (int i = 0; i < (1 << n); i ++) {int cnt = 0, ok = 1;for (int k = 0; k < n; k ++) {if ((i >> k) & 1) {if (cnt & 1) ok = 0;cnt = 0;} else {cnt ++;}}if (cnt & 1) ok = 0;st[i] = ok;}for (int i = 0; i < (1 << n); i ++) {for (int j = 0; j < (1 << n); j ++) {if (i & j) continue;if (st[i | j]) {fac[i].push_back (j);}}}//dp转移memset (f, 0, sizeof f);f[0][0] = 1;for (int i = 1; i <= m; i ++) {for (int j = 0; j < (1 << n); j ++) {for (auto k : fac[j]) {f[i][j] += f[i - 1][k];}}}cout << f[m][0] << endl;
}int main () {while ((cin >> n >> m) && (n || m)) {solve ();}return 0;
}
http://www.sczhlp.com/news/167083/

相关文章:

  • 21 ACwing 289 环路运输 题解
  • 26 UVA1630 串折叠 Folding 题解
  • 网站开发与建设课程上海网站排名优化公司
  • 网站建设与管理个人总结wordpress文章全部删除
  • 网站网站程序架设郴州市人力资源考试网官网
  • 大唐网站设计wordpress qtranslate
  • 一个成功网站要素主要有哪些wordpress 自动超链接
  • 音频网站建设无法定位wordpress内容目录(wp-content)
  • 房屋产权地址备案在那个网站做wordpress 新媒体
  • 创建一个购物网站需要什么建筑网片的用途有哪些
  • 上海备案证查询网站查询系统有哪些平面设计网站
  • 电子商务网站建设基本流程图厦门建站网址费用
  • 网站icp备案信息不能为空优秀网站界面设计
  • 如何优化网站关键词排名购物网站建设得背景
  • 做app模板网站有哪些内容尤溪网站建设
  • 建设网站去哪里找股票推荐怎么做网站
  • 福清建设银行网站问答推广的优势和不足
  • 微信互动营销网站建设织梦cms如何做网站
  • 离石市网站建设公司百度seo公司整站优化
  • 四川城乡住房建设部网站怎样开网店
  • 百度网站怎么做的网站单页在线制作
  • 企业网站建设图手机端wordpress模板
  • 外国客户网站河南郑州百姓网
  • 网站加百度地图公司网站域名主机
  • 安阳做网站的地方网页设计实训心得200字
  • 德宏芒市建设局网站微信做淘宝优惠券但网站是怎么建设但
  • 免费的行情网站app代码手机软件界面设计
  • 做啊录音网站公司起名参考大全
  • 音乐网站建设论文的目的和意义wordpress小程序怎么发布文章
  • 搭建好网站如何使用旅游网站开发背景及意义