hihocoder编程练习赛52-2 亮灯方案
思路:
状态压缩dp。
实现:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = ;
const int dx[] = {, , -, };
const int dy[] = {, , , -};
int n, m;
ll dp[( << ) + ];
char a[MAXN][MAXN], tmp[MAXN][MAXN];
bool check(int x, int y, int S)
{
for (int i = ; i < ; i++)
{
int nx = x + dx[i], ny = y + dy[i];
if (nx >= && nx < n && ny >= && ny < m && (S & ( << (nx * m + ny))))
return true;
}
return false;
}
ll dfs(int now, int S)
{
if (dp[S] != -) return dp[S];
if (now == n * m) return ;
ll cnt = ;
for (int i = ; i < n; i++)
{
for (int j = ; j < m; j++)
{
int x = i * m + j;
if (!(S & ( << x)) && check(i, j, S))
cnt += dfs(now + , S | ( << (i * m + j)));
}
}
return dp[S] = cnt;
} int main()
{
cin >> n >> m;
int now = , S = ;
for (int i = ; i < n; i++)
for (int j = ; j < m; j++)
cin >> a[i][j];
for (int i = ; i < n; i++)
{
for (int j = ; j < m; j++)
{
if (a[i][j] == '')
{
now++;
S |= ( << i * m + j);
}
}
}
memset(dp, -, sizeof dp);
cout << dfs(now, S) << endl;
return ;
}
hihocoder编程练习赛52-2 亮灯方案的更多相关文章
- hihoCoder编程练习赛52
题目1 : 字符串排序 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 一般我们在对字符串排序时,都会按照字典序排序.当字符串只包含小写字母时,相当于按字母表" ...
- hihocoder [Offer收割]编程练习赛52 D 部门聚会
看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n*(n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半 ...
- hihoCoder编程练习赛67
题目1 : 序列 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个正整数 n, P,求满足以下两个条件的长度为 n 的序列 ai 个数: 1. 1 ≤ ai ≤ ...
- hihocoder 编程练习赛23
第一题:H国的身份证号码I 题意:一个N位的正整数(首位不能是0).每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K.按从小到大的顺序输出所有合法的N位号码,每个号码占一行. 思路:dfs ...
- hihocoder编程练习赛75
题目1 : 工作城市分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H公司在北京和上海两个城市各有一间办公室.该公司最近新招募了2N名员工,小Hi负责把这2N名员工 ...
- hihoCoder编程练习赛72
题目1 : 玩具设计师 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho作为Z国知名玩具品牌AKIRE的首席设计师,对玩具零件的挑剔程度已经到了叹为观止的地步.所有 ...
- hihoCoder编程练习赛70
题目1 : 数位翻转 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 n,你可以进行若干次操作,每次操作可以翻转 n 的二进制表示下的某一位,即将 0 变成 ...
- hihoCoder编程练习赛69
题目1 : 偶数长度回文子串 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个小写字母字符串,请判断它是否有长度为偶数的非空连续回文子串 输入 输入包含多组数据. ...
- hihoCoder编程练习赛49
题目1 : 相似颜色 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在CSS中我们可以用井号(#)加6位十六进制数表示一种颜色,例如#000000是黑色,#ff0000 ...
随机推荐
- com.squareup.timessquare.CalendarPickerView
com.squareup.timessquare.CalendarPickerView https://github.com/square/android-times-square
- iOS视频流开发(2) — 视频播放
iOS视频流开发(2) — 视频播放 承上篇,本篇文章主要介绍iOS视频播放需要用到的类.以及他们的使用场景和开发中遇到的问题. MPMoviePlayerViewController MP简介 i ...
- C项目实践--网络协议和套接字编程
1.TCP/IP协议 TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议,ICMP(Internet Control Message Proto ...
- 初识NodeJS服务端开发(Express+MySQL)
http://www.alloyteam.com/2015/03/sexpressmysql/
- 借助ltp语义分析提取特征,之后,文本生成
"""地点-哪里有做-业务-的(正规|靠谱)-公司?地点-做-业务-的(正规|靠谱)-公司(有哪些?|的联系方式是什么?|哪家口碑好值得信赖?)地点-做-业务-(怎么能省 ...
- 用css解决Unigui在IE系列浏览器中字体变小的问题(设置UniServeModule的customcss属性)
Unigui运行在chrome浏览器下可以有最佳的效果,但用ie打开用unigui做的项目会发现字体明显小一截,可以用自定义css来解决这个问题. 可以在UniServeModule的customcs ...
- ABAP WEBRFC
通过WEBRFC实现在网页下载SMW0上传的文件 FUNCTION zhr_download_test. *"---------------------------------------- ...
- linux下nginx模块开发入门
本文模块编写参考http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html 之前讲了nginx的安装,算是对n ...
- [转]POI读写Excel 修改
[转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...
- Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等-uncheck
ylbtech-Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等 1.返回顶部 1. Java 实例 - 测试两个字符串区域是否相等 Java ...