hdu_4529_郑厂长系列故事——N骑士问题(状压DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4529
题意:中文,不解释
题解:状压DP,dp[i][j][k][s]表示第i行当前用了j个骑士,i-1行的压缩状态为k,i行的压缩状态为j,然后用滚动数组优化了一下,注意如果不预处理不可存放位置会超时
#include<cstdio>
#include<cstring>
#define N (1<<8)
#define FFC(i,a,b) for(int i=a;i<=b;++i) int T,n,dp[][][N][N],g[N],num[N],f1[N][N],f2[N][N],cur,ans; void init(){//预处理不可放的位置,和每一个压缩状态的骑士数目
FFC(i,,N-){
FFC(j,,)if(i&(<<j))num[i]++;
FFC(j,,N-){
if(((i>>)&j)||((j>>)&i))f1[i][j]=;
if(((i>>)&j)||((j>>)&i))f2[i][j]=;
}
}
}
int fuck(){
memset(dp,,sizeof(dp));
cur=,ans=,dp[][][][]=;
FFC(i,,){
FFC(j,,n)FFC(p,,N-)FFC(q,,N-){
if (dp[cur][j][p][q]==)continue;
FFC(z,,N-)
if (((z&g[i+])!=z)||num[z]+j>n||(i>=&&f1[q][z])||(i>=&&f2[p][z]))continue;
else dp[cur^][num[z]+j][q][z]+=dp[cur][j][p][q];
}
memset(dp[cur],,sizeof(dp[cur])),cur^=;
}
FFC(i,,N-)FFC(j,,N-)ans+=dp[cur][n][i][j];
return ans;
} int main() {
init();char str[N];
scanf("%d",&T);
while (T--){
scanf("%d",&n);
memset(g,,sizeof(g));
FFC(i,,){
scanf("%s",str);
FFC(j,,){
g[i]<<=;
if(str[j]=='.')g[i]|=;
}
}
printf("%d\n",fuck());
}
return ;
}
hdu_4529_郑厂长系列故事——N骑士问题(状压DP)的更多相关文章
- HDU 4529 郑厂长系列故事——N骑士问题 状压dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4529 郑厂长系列故事--N骑士问题 Time Limit: 6000/3000 MS (Java/O ...
- HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4529 郑厂长系列故事——N骑士问题 Time Limit: 6000/3000 MS (Java/Ot ...
- HDU 4539 郑厂长系列故事——排兵布阵 状压dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事--排兵布阵 Time Limit: 10000/5000 MS (Java/O ...
- HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Ot ...
- hdu_4539_郑厂长系列故事——排兵布阵(状压DP|最大团)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 题意:中文,不解释 题解:将每一行的状态压缩,然后进行DP,也可以用最大团做.这里我用的DP # ...
- HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP
题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...
- HDU----(4519)郑厂长系列故事——体检
郑厂长系列故事——体检 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total S ...
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
HDU 4539 郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 //#pragma co ...
- HDU 4539 郑厂长系列故事——排兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) ...
随机推荐
- Objective-C与Swift下的自定义打印函数(Debug和Release)
1.Objective-C 在使用Objective-C进行开发的过程中,为了Debug会不断的设置打印函数.如下图是我们经常用的,用来测试监听方法的实现与否: NSLog(@"%s&quo ...
- date,datetime,timestamp 的区别
date 表示年月日,如YY-MM-DD datetime 表示年月日和时间信息,如YY-MM-DD HH:MM:SS datestamp 和datetime表示的信息相同,但时间范围不同 时间范围 ...
- Python编程工具IDLE快捷键
IDLE编辑器快捷键 自动补全代码 Alt+/(查找编辑器内已经写过的代码来补全) 补全提示 Ctrl+Shift+space(默认与输入法冲突,修改之) (方 ...
- Ubuntu Git服务器搭建
1.安装git和ssh工具 apt-get install git-core openssh-server openssh-client 2.添加用户名为git的用户 useradd -m git 3 ...
- 下载、安装jdk8(Windows下)并配置变量环境
一.官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 点击下图中的downloa ...
- day23 框架之基础加强
day23 框架之基础加强 今日任务 aptana(javascript的eclipse插件):http://www.cnblogs.com/terrylin/archive/2012/06/20/2 ...
- js中checkbox反选
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- vs2008试用版的评估期已经结束解决办法
1.控制面板----程序和功能----找到VS2008,打开"卸载/更改". 2.下载补丁:files.cnblogs.com/elaky/PatchVS2008.zip 打补丁之 ...
- GitHub版本控制工具入门(一)
你还在使用 SVN 吗? 那就太 low 了... 概述 要了解 github 要从另外一个软件开始,那就是 git ,他的中文意思是 傻子 ,这款软件为什么要起一个这么傻的名字呢? 那你就需要了解一 ...
- Linux启动新进程的几种方法及比较[转]
有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些 ...