好题。果然好题,经典了。

列一个计划,清明前做好状压DP。之后就刷剩下的MULTI。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
const int Status=(1<<8); int dp[2][11][Status][Status]; //滚动数组实现。dp[i][j][k][l],其中表示当前状态i(权且认为是i行),推出下一个状态next,i状态以前总共使用了
//j个骑士,ki-1行放骑士的状态,l是i行的状态,这时的放置方法数。答案DP就行。
bool crashpt[Status][Status]; //当前行状态与上两行的状态是否有不相容
bool crashpo[Status][Status]; //当前行(要推出的行)与上一行状是否有冲突
int total[Status]; //每种状态会用了多少个骑士。
int G[10],n; //G[i]表示第i行可放骑士的位置的情况,压 缩。
char str[10]; void predo(){
memset(crashpt,false,sizeof(crashpt));
memset(crashpo,false,sizeof(crashpo));
memset(total,0,sizeof(total));
for(int i=0;i<Status;i++){
for(int j=0;j<8;j++){
if(i&(1<<j)) total[i]++;
}
for(int j=0;j<Status;j++){
if((j&(i>>2))||(i&(j>>2))) crashpo[i][j]=true;
if((j&(i>>1))||(i&(j>>1))) crashpt[i][j]=true;
}
}
} void slove(){
int cur=0,next=1;
memset(dp[0],0,sizeof(dp[0]));
dp[cur][0][0][0]=1;
for(int i=0;i<8;i++){
for(int j=0;j<=n;j++){
for(int t=0;t<Status;t++){
for(int o=0;o<Status;o++){
if(!dp[cur][j][t][o]) continue;
for(int now=0;now<Status;now++){
if(j+total[now]>n) continue;
if((now&G[i+1])!=now) continue;
if(crashpt[now][t]||crashpo[now][o]) continue;
dp[next][j+total[now]][o][now]+=dp[cur][j][t][o];
}
}
}
}
memset(dp[cur],0,sizeof(dp[cur]));
swap(cur,next);
}
int ans=0;
for(int i=0;i<Status;i++){
for(int j=0;j<Status;j++)
ans+=dp[cur][n][i][j];
}
printf("%d\n",ans);
} int main(){
int T;
scanf("%d",&T);
predo();
while(T--){
scanf("%d",&n);
memset(G,0,sizeof(G));
for(int i=1;i<=8;i++){
scanf("%s",str);
for(int j=0;j<8;j++){
G[i]<<=1;
if(str[j]=='.') G[i]|=1;
}
}
slove();
}
return 0;
}

  

HDU 4529的更多相关文章

  1. HDU 4529 郑厂长系列故事——N骑士问题 状压dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4529 郑厂长系列故事--N骑士问题 Time Limit: 6000/3000 MS (Java/O ...

  2. hdu 4529 Double Dealing (置换群)

    # include <stdio.h> # include <algorithm> # include <string.h> using namespace std ...

  3. HDU 4529 状压dp

    郑厂长系列故事——N骑士问题 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

  4. 【转载】ACM总结——dp专辑

    感谢博主——      http://blog.csdn.net/cc_again?viewmode=list       ----------  Accagain  2014年5月15日 动态规划一 ...

  5. 【DP专辑】ACM动态规划总结

    转载请注明出处,谢谢.   http://blog.csdn.net/cc_again?viewmode=list          ----------  Accagain  2014年5月15日 ...

  6. dp专题训练

    ****************************************************************************************** 动态规划 专题训练 ...

  7. 【DP专辑】ACM动态规划总结(转)

    http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强, ...

  8. dp有哪些种类

    dp有哪些种类 一.总结 一句话总结: 二.dp动态规划分类详解 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. * ...

  9. (转)dp动态规划分类详解

    dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...

随机推荐

  1. akka设计模式系列

    由于本人爱好Scala,顺便也就爱好Akka,但目前网上对Akka的介绍大多都是概念上或技术方向上的介绍,基本没有Akka设计模式或者Actor模型设计模式的资料.这对于Akka的普及非常不利,因为即 ...

  2. An problem about date 根据年月日计算 星期几

    /W = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7(1.2月需要看作上一年的13.14月) #include<stdio.h> #include& ...

  3. Android 图片异步加载 加载网络图片

    最近用到了加载网络图片,研究了一下,写一点简单的介绍: 首先创建一个线程去取图片(网络请求必须放在线程中): /** * 使用继承java.lang.Thread类的方式创建一个线程 * 直接取图片, ...

  4. android:scaleType 布局文件加载图片时候的显示方式

    android:scaleType="center" 以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放,当图片长/宽超过View的长/宽 ...

  5. 阿里云ECS远程桌面连接失败

    管理=>本实例安全组=>配置规则=>配置3389端口

  6. lldb e、@weakify(self) 网络请求400错误

    lldb的问题属于调试器: 下面命令用于在调试时设值 e self.apiModel.apiParams = [NSDictionary dictionaryWithObjectsAndKeys:@& ...

  7. Django中图片的上传并显示

    一.settings配置文件中配置 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'medias').replace('\\', ...

  8. Vue项目优化首屏加载速度

    Vue项目部署上线后经常会发现首屏加载的速度特别慢:那么有那写能做的简单优化呢 一.路由的懒加载 路由懒加载也就是 把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件. 结合 ...

  9. Xftp 5 和 Xshell 5 基本使用方法

    软件介绍: (1)Xshell: 一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的 TELNET 协议.Xshell通过互联网可以连接到远程的服 ...

  10. jdk编译安装及tomcat编译安装

    这里我安装的jdk版本为1.8版本,tomcat版本为8.5(请上官网下载) 运维开发技术交流群欢迎大家加入一起学习(QQ:722381733) jdk部署: 1.前往软件所在路径 [root@web ...