状态压缩。分最后一个槽的值以及当前的配置方案是否可以进行DP。

 /* 1438 */
#include <cstdio>
#include <cstring>
#include <cstdlib> #define MAXN 32 const int MAXS = <<; __int64 dp[MAXN][MAXS][][];
int cnt[<<]; int abs(int x) {
return x< ? -x:x;
} int main() {
int i, j, k, n;
int s;
__int64 ans; memset(cnt, , sizeof(cnt));
for (i=; i<MAXS; ++i)
for (j=; j<; ++j)
if (i & (<<j))
++cnt[i]; memset(dp, , sizeof(dp));
for (i=; i<; ++i)
dp[][<<i][i][] = ; for (n=; n<MAXN; ++n) {
for (i=; i<MAXS; ++i) {
for (j=; j<; ++j) {
for (k=; k<; ++k) {
s = i | (<<j);
dp[n][s][j][] += dp[n-][i][k][];
if (abs(j-k) == ) {
dp[n][s][j][] += dp[n-][i][k][];
} else {
dp[n][s][j][] += dp[n-][i][k][];
}
}
}
}
} for (n=; n<MAXN; ++n) {
ans = ;
for (i=; i<MAXS; ++i) {
if (cnt[i] >= )
ans += dp[n][i][][] + dp[n][i][][] +\
dp[n][i][][] + dp[n][i][][];
}
printf("N=%d: %I64d\n", n, ans);
} return ;
}

最新文章

  1. LabVIEW如何将脚本插入Quick Drop
  2. protocol buffers的使用示例[z]
  3. 获取枚举类型的描述description
  4. C. Mobile phones
  5. 使用ibatis时 sql中 in 的参数赋值
  6. 流风ASP.NET框架商业版-工作流1.0简介
  7. yum lamp for Centos6.4
  8. 符号文件(.pdb)——Windows 应用程序调试必备
  9. Arraylist、Linkedlist遍历方式性能分析
  10. css删除线,下划线等
  11. luogu 4042 有后效性的dp
  12. C++中const的用法
  13. windows安装gitblit服务端
  14. AF_INET域与AF_UNIX域socket通信原理对比【转】
  15. 洛谷P3865 ST表
  16. 3.2_k-近邻算法案例分析
  17. DRM/KMS 基本组件介绍
  18. ZJOI 2017 day2 4.27
  19. 浅谈PVC塑料配方计算软件的设计
  20. MapReduce 二次排序

热门文章

  1. ScheduledExecutorService定时周期运行指定的任务
  2. Android中的Apk的加固(加壳)原理解析和实现
  3. 常用颜色大全---RGB值及中英文名称
  4. Java中数组的初始化方式
  5. [转] C++11带来的move语义
  6. C++对象模型学习笔记
  7. lvs+heartbeat搭建负载均衡高可用集群
  8. Pyhton开发【第五篇】:Python基础之杂货铺
  9. HTML案例练习一
  10. css居中技巧