【HDOJ】1438 钥匙计数之一
2024-10-16 19:15:08
状态压缩。分最后一个槽的值以及当前的配置方案是否可以进行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 ;
}
最新文章
- LabVIEW如何将脚本插入Quick Drop
- protocol buffers的使用示例[z]
- 获取枚举类型的描述description
- C. Mobile phones
- 使用ibatis时 sql中 in 的参数赋值
- 流风ASP.NET框架商业版-工作流1.0简介
- yum lamp for Centos6.4
- 符号文件(.pdb)——Windows 应用程序调试必备
- Arraylist、Linkedlist遍历方式性能分析
- css删除线,下划线等
- luogu 4042 有后效性的dp
- C++中const的用法
- windows安装gitblit服务端
- AF_INET域与AF_UNIX域socket通信原理对比【转】
- 洛谷P3865 ST表
- 3.2_k-近邻算法案例分析
- DRM/KMS 基本组件介绍
- ZJOI 2017 day2 4.27
- 浅谈PVC塑料配方计算软件的设计
- MapReduce 二次排序