题目链接

  真是可恶,被数据范围坑了一把。想要一遍AC的希望破灭了……

  以后大家在做状压DP的时候一定要开long long……

  设f[i][j][k]表示考虑前i行,总共放了j个King,第i行状态为k时的方案数。

  先统计出k的二进制位有多少1,记为len,然后枚举o(1~(1<<n)-1),则状态转移方程有:

  f[i][j][l]+=f[i-1][j-len][o];

  注意判断两个状态是否合法。

  j&(j>>1)不行,o&j不行,(o>>1)&j不行,(o<<1)&j也不行。当然o&(o>>1)更不行。

  最后累计答案。

  代码如下

  

#include<cstdio>
#include<cctype>
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long f[][][];
inline int getlen(long long x){
int ans=;
bool s;
while(x){
if(x&) ans++;
x>>=;
}
return ans;
} long long Max;
long long ans; inline bool check(long long x,long long y){
if(x&y) return ;
if((x>>)&y) return ;
if((x<<)&y) return ; return ;
} int main(){
f[][][]=;
int n=read(),k=read();
Max=(<<n)-;
for(int i=;i<=n;++i)
for(int j=;j<=k;++j)
for(int l=;l<=Max;++l){
int len=getlen(l);
if(len>j) continue;
if(l&(l>>)) continue;
for(int o=;o<=Max;++o){
if(check(o,l)) continue;
if(o&(o>>)) continue;
f[i][j][l]+=f[i-][j-len][o];
}
}
for(int i=;i<=Max;++i)
ans+=f[n][k][i];
printf("%lld",ans);
return ;
}

最新文章

  1. 图表插件Charts.js的使用
  2. web.xml添加编码过滤器
  3. 测试dns
  4. 多年前写的DataTable与实体类的转换,已放github
  5. [转] 国内外最全面和主流的JS框架与WEB UI库(强烈推荐)
  6. Ubuntu14.10+cuda7.0+caffe配置
  7. 跨域请求之JSONP 一
  8. M端页面-绝对定位布局
  9. BZOJ 2982: combination( lucas )
  10. 【C语言】超大数乘法运算
  11. Java 集合之LinkedList源码分析
  12. Build MySQL 5.7.4 in RedHat
  13. js 基础对象二
  14. Oracle Database Transaction Isolation Levels 事务隔离级别
  15. JAVA中正则表达式总结
  16. Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)
  17. python3 pickle模块
  18. Centos7下安装Docker
  19. 【题解】Luogu P4097 [HEOI2013]Segment
  20. Cheat Engine(简称CE)初体验

热门文章

  1. Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)
  2. Android用Intent来启动Service报“java.lang.IllegalArgumentException: Service Intent must be explicit”错误的解决方法
  3. winform重绘
  4. MYSQL 中随机读取一条数据
  5. 用Hexo免费搭建你自己的博客
  6. 当互联网遇上家装,十大家装O2O混战
  7. Gym 100342E Minima (暴力,单调队列)
  8. CentOS7——防火墙设置
  9. 【page-monitor 前端自动化 下篇】 实践应用
  10. 精选30道Java笔试题附答案分析