【ABC196-D】 Hanjo(dfs+状态标记)
题目传送门
题目
思路
应该是经典铺瓷砖问题了,QAQ。
从左到右,从上到下去遍历这个H*W的网格,每遇到一个1x1的格子:
- 如果可以放1x1的瓷砖,就放1个1x1的瓷砖
- 如果可以水平放置1个2x1的瓷砖,就水平放1个2x1的瓷砖
- 如果可以竖直放置1个2x1的瓷砖,就竖直放1个2x1的瓷砖
可以用二进制(一个int类型的数)或者二维数组来标记每个格子的状态:有没有铺瓷砖。通过dfs来求解答案。
代码
二进制标记状态法:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <map>
#include <queue>
#include <limits.h>
#include <stack>
using namespace std;
typedef long long ll;
const int maxn = 110;
int H, W, A, B, ans = 0;
void solve(int s, int bit, int a, int b)
{if(s==H*W){ans++;return ;}if(bit&(1<<s)) return solve(s+1, bit, a, b);if(a){if(s%W!=W-1 && !(bit&(1<<(s+1)))) solve(s+1, bit|(1<<s)|(1<<(s+1)), a-1, b);if(s+W<H*W) solve(s+1, bit|(1<<s)|(1<<(s+W)), a-1, b);}if(b) solve(s+1, bit|(1<<s), a, b-1);
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt", "r", stdin);cin >> H >> W >> A >> B;solve(0, 0, A, B);cout << ans << endl;return 0;
}
二维数组标记状态法:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <map>
#include <queue>
#include <limits.h>
#include <stack>
using namespace std;
typedef long long ll;
const int maxn = 110;
int H, W, A, B, ans = 0;
int nx, ny;
bool vis[20][20];
void solve(int s, int x, int y, int a, int b)
{if(s==H*W){ans++;return ;}int nx = x+1, ny = y;if(x==W) nx = 1, ny++;if(vis[x][y]) return solve(s+1, nx, ny, a, b);if(a){if(x!=W && !vis[nx][ny]){vis[x][y] = vis[nx][ny] = true;solve(s+1, nx, ny, a-1, b);vis[x][y] = vis[nx][ny] = false;} if(y<H){vis[x][y] = vis[x][y+1] = true;solve(s+1, nx, ny, a-1, b);vis[x][y] = vis[x][y+1] = false;} }if(b){vis[x][y] = true;solve(s+1, nx, ny, a, b-1);vis[x][y] = false;}
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt", "r", stdin);cin >> H >> W >> A >> B;solve(0, 1, 1, A, B);cout << ans << endl;return 0;
}
【ABC196-D】 Hanjo(dfs+状态标记)相关推荐
- 洛谷P1562 还是N皇后(DFS+状态压缩+位运算)
八皇后问题的介绍在此不再赘述,只贴一下经典八皇后问题的实现代码(参考刘汝佳 <算法竞赛入门经典>) void search(int i) {if(i>n){ans++;return; ...
- hdu 3681(bfs+dfs+状态压缩)
解题思路:这道题属于图上来回走的问题,可以把重复走的过程弱化,即只强调从u->v的结果,中间经过的节点都不考虑.这道题里面'G','F','Y'是重要的节点,其余的点我们是可以忽略的,也就是说, ...
- uva10160(dfs+状态压缩)
题意:给出n个点,以及m条边,这些边代表着这些点相连,修一个电力站,若在某一点修一个站,那么与这个点相连的点都可以通电,问所有的点都通电的话至少要修多少个电力站........ 思路:最多给出的是35 ...
- AOJ0525 Osenbei【DFS+状态组合】
おせんべい 問題 IOI製菓では,創業以来の伝統の製法で煎餅(せんべい)を焼いている.この伝統の製法は,炭火で一定時間表側を焼き,表側が焼けると裏返して,炭火で一定時間裏側を焼くというものである.この ...
- svn 文件状态标记含义
svn status打印五列字符,紧跟一些空格,接着是文件或者目录名.第一列告诉一个文件的状态或它的内容,返回代码解释如下: A item 文件.目录或是符号链item预定加入到版本库. C item ...
- msm8909耳机孔状态标记
添加msm8909 添加耳机线是否插入的标记,用于上层读写,cat /sys/module/msm8916_wcd_irq/parameters/msm8x16_line_status 为1表示接入 ...
- 【备忘】指定为同名callback的jsonp IE下script loaded状态标记
[已知] 不知道大家有木有了解过jQuery1.0到2.0时候针对jsonp那一块的修改.v1.0的时候还在使用iframe作为请求数据的临时暂居地.以便让过往数据有据可查.保证了jsonp请求的时候 ...
- css实现仿element ui配色的小圆圈状态标记
实现的效果如图 css代码如下 .status-info{display:inline-block;width: 7px;height:7px;background:#f4f4f5;border-ra ...
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩
文章目录 题目解答 题目链接 题目解答 分析: 此题和笔者另一篇博文很像,只不过是限定了个数.<算法竞赛进阶指南>打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归.二进 ...
- 状态压缩+dfs+背包
状态压缩dp 状态压缩dp就是用二进制数字来表示状态,通过遍历所有状态确定答案,时间复杂度为o(nn2^n),通常只能用来解数据范围小于等于21的. P1433 吃奶酪 #include <bi ...
最新文章
- 数组元素替换_LeetCode 题解 | 189. 旋转数组
- python 设置 初始值_Python初始值表示为无穷大
- linux进程间通讯-共享内存
- mysql 5.7.20 安装_MySql 5.7.20安装
- Java集合-ArrayList源码解析-JDK1.8
- [单选题]$array = array('a','b','c','d'); $array_now = array_splice($array,2); print_r($array_now);...
- BZOJ1509: [NOI2003]逃学的小孩
- Python的numpy基本用法
- Win-MASM64汇编语言-$/取当前行代码的地址
- (Quicker)懒人福利:鼠标快捷操作工具箱
- thrift 学习 了解
- 华为手机鸿蒙系统下载,华为鸿蒙系统手机版
- 常用的简单的数值比较方法
- 弹性力学经典解法与有限元法的不同特点
- 2020Google开发者大会总结
- Eclipse中的 项目编码设置
- Uber 机器学习平台 — 米开朗基罗
- php判断0点到7点凌晨时间段的方法
- Mysql访问日志记录
- EasyNVR网页摄像机直播方案H5前端构建之:区分页面是自跳转还是分享依据
热门文章
- git cherry-pick 的使用
- c语言二级考试题型2016,2016年计算机二级《C语言》操作试题及答案
- Math详解大全,数学类
- linux内核percpu变量声明,Linux内核对per-cpu变量的实现
- php通用下载方法,PHP实现打包下载文件的方法示例
- 单纯学python能干啥_如何高效学习Python编程,转行的朋友可以过来看看,单纯的经验分享...
- python闹钟界面程序_利用QT写一个极简单的图形化Python闹钟程序
- javascript自定义alert弹窗
- 服务器未能识别 HTTP 标头 SOAPAction 的值
- Web前端-HTTP Cache-control