题干:

小乐乐想要给自己搭建一个积木城堡。

积木城堡我们假设为n*m的平面矩形。

小乐乐现在手里有1*2,2*1两种地砖。

小乐乐想知道自己有多少种组合方案。

输入描述:

第一行输入整数n,m。(1<=n,m<=10)

输出描述:

输出组合方案数。

示例1

输入

复制

2 3

输出

复制

3

说明

示例2

输入

复制

1 3

输出

复制

0

示例3

输入

复制

2 5

输出

复制

8

解题报告:

这题状压dp,,那种很传统的方法就不贴了,,今天来贴一个更快的方法、、不同点不在于预处理第一行,而是下面的行,也就是直接找到第二行所有符合的状态,顺便找到对应上一行应该有的状态,直接做和就可以了。

AC代码:

/*优化:不去盲目的列举所有状态i和j然后判断状态j能否到达i,这样效率很低,因为能到达i的状态j很少
因此对于每种状态i,由i区搜索能到达i的状态j,大大提高效率
有298ms->32ms
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <queue>
#include <algorithm>
#include <map>
#include <cmath>
#include <iomanip>
#define INF 0x3f3f3f3f
typedef long long LL;
using namespace std;const int MAX=(1<<11)+10;
int n,m;
LL temp[MAX],dp[MAX],biao[15];
bool check(int i){while(i){if(i&1){i>>=1;if(!(i&1))return false;//第j列是1则第j+1列必须是1i>>=1;//继续判断下一列}else i>>=1;//继续判断下一列}return true;
}
void Init(){memset(temp,0,sizeof temp);for(int i=0;i<biao[m];++i)if(check(i))temp[i]=1;//初始化第一行
}
void dfs(int lie,int now,int cur) {if(lie == m) {dp[now] += temp[cur];return ;}if((now>>lie) & 1) {dfs(lie+1,now,cur);if((now>>(lie+1)) & 1) dfs(lie+2,now,cur|(1<<lie)|(1<<(lie+1)));}else dfs(lie+1,now,cur|(1<<lie));
}
void DP(){for(int k=2;k<=n;++k){for(int i=0;i<biao[m];++i) dp[i]=0;for(int i=0;i<biao[m];++i) dfs(0,i,0);for(int i=0;i<biao[m];++i) temp[i]=dp[i];}
}int main(){biao[0]=1;for(int i=1;i<12;++i)biao[i]=2*biao[i-1];scanf("%d%d",&n,&m);//if(n<m)swap(n,m);//始终保持m<n,提高效率Init();DP();printf("%lld\n",temp[biao[m]-1]);//输出最后一行到达时的状态必须全部是1return 0;
}

【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐搭积木(状压dp)相关推荐

  1. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级 )】小乐乐和25(模拟,技巧)

    题干: 小乐乐特别喜欢25这个数字,他想把所有的数字都变成25的倍数. 现在小乐乐得到一个数字,想问问你最少用几次操作才可以把这个数字改造成25的倍数. 对于一次操作我们可以把相邻的两位做交换,比如1 ...

  2. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐下象棋(记忆化搜索dp,dfs)

    题干: 小乐乐一天天就知道玩,这一天又想玩象棋. 我们都知道马走日. 现在给定一个棋盘,大小是n*m,把棋盘放在第一象限,棋盘的左下角是(0,0),右上角是(n - 1, m - 1); 小乐乐想知道 ...

  3. *【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐打游戏(bfs,双元bfs,思维)

    题干: 小乐乐觉得学习太简单了,剩下那么多的时间好无聊,于是便想打游戏.         最近新出了一个特别火的游戏,叫吃猪,小乐乐准备玩一玩.         吃猪游戏很简单,给定一个地图,大小为n ...

  4. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐的组合数+(取模,数学,思维)

    题干: 小乐乐得知一周有7天之后就对7产生了兴趣. 小乐乐得到了两堆数字数字时连续的. 第一堆包含[1,n]n个数字,第二堆包含[1,m]m个数字. 小乐乐想要从两堆中各挑选出一个整数x,y,使得x, ...

  5. 【牛客 - 302哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)】小乐乐切割方块(思维,水题)

    题干: 小乐乐的作业本是2n*2n的方格本. 某天小乐乐的童鞋,想要考验一下小乐乐. 他将小乐乐的一张方格纸中的某个格子(x,y)涂成黑色, 小乐乐能否在将4*4的方格本沿着方格边缘且切割线与黑色方格 ...

  6. 【牛客 - 302哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)】小乐乐吃糖豆 (fIb博弈)

    题干: 小乐乐是一个比较喜欢吃糖豆的小孩子,小乐乐的哥哥大乐乐也同样爱吃糖豆. 作为一个小孩子,他们永远觉得谁吃掉了最后一个糖豆,谁吃的糖豆最多. 为了公平起见小乐乐与大乐乐商量吃糖豆的规则如下: 1 ...

  7. 【牛客 - 302哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)】 小乐乐算数字(水题,快速幂,lowbit)

    题干: 小乐乐最喜欢玩数字了. 小乐乐最近迷上了2这个整数,他觉得2的幂是一种非常可爱的数字. 小乐乐想知道整数x的最大的 2的幂 (2^y)的因子. y为整数. 输入描述: 输入整数x.(1< ...

  8. 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)题解(全)

    链接:https://ac.nowcoder.com/acm/contest/301#question 来源:牛客网 比较难的有 目录(很难的,比较难的) A小乐乐的组合数+              ...

  9. 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级) 小乐乐的组合数+

    题目: 链接:https://ac.nowcoder.com/acm/contest/301/A 来源:牛客网 题目描述 小乐乐得知一周有7天之后就对7产生了兴趣. 小乐乐得到了两堆数字数字时连续的. ...

最新文章

  1. 一个功能齐全的DataGrid分页例子
  2. 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法
  3. 各种学习资源 文档、手册 (Docker 、springboot 、Guava、git、logback 、Linux 、MQ、vue、Axios)
  4. java 设计模式原则_Java设计模式的七大原则
  5. android5.1 sdk version,java - Android SDK version 23.6 - Stack Overflow
  6. Android插件丢失怎么办,Android studio推荐插件以及升级后插件丢失问题解决
  7. cookie 原理及应用
  8. 富士康欲进军电动汽车市场 目标占据市场10%份额
  9. 蓝桥杯 ALGO-129 算法训练 特殊的数字四十
  10. win7 任务计划 任务映像已损坏或篡改(异常来自HRESULT:0x80041321)
  11. Hulk容器服务的镜像CI解决方案
  12. error while trying to retrieving text
  13. 小程序之H5游戏砸金蛋
  14. 第8章 离不开的数据库
  15. uni-app跳转浏览器
  16. QTextToSpeech 文本转语音输出
  17. 计算机复制教程,教你如何使用电脑复制粘贴快捷键
  18. 高楼火灾的时候如何利用逃生缓降器进行逃生?
  19. win10系统下找不到hosts文件解决方案
  20. 美国大学计算机科学博士生排名,2021美国大学本科计算机专业(高学位博士)排名...

热门文章

  1. 自然语言处理与文本检索
  2. 【数据结构与算法】排序 冒泡、插入、选择 O(n^2)
  3. notion函数_Notion使用指南 | Database篇
  4. 语言三做一年级算题_一年级数学期末考试,学生交卷说能考100分,快让你家孩子试试吧...
  5. for循环数据量太大_中文文本分类roberta大力出奇迹之数据量大的问题
  6. 盘锦工业机器人厂家_盘锦制造进入“机器人时代”
  7. python break跳出外层_失去循环标记的Python,我这样实现跳出外层循环
  8. jsp java代码_jsp内的java代码不执行,急啊!!大家来看看!
  9. ubuntu安装python_ubuntu18.04下源码编译安装最新版本Python3
  10. Linux编程练习 --进程间通信1--无名管道