poj 1190 生日蛋糕 隐式图搜索
2014-03-29 14:36
561 查看
#include <stdio.h> #include <math.h> #define MIN(x, y) (x) < (y) ? (x) : (y) #define maxn 21 #define INF 0x7fff int bstv[maxn]; int bsts, m; void dfs(int f, int bufs, int bufv, int r, int h){ if(f == 0){ if(bufv == 0 && bufs < bsts) bsts = bufs; return; } if(bufv-bstv[f-1] < 0 || bufs >= bsts || bufs+2*bufv/r > bsts) return; int i; for(i = r-1; i >= f; --i){ if(f == m) bufs = i*i; int j = MIN(h-1, (bufv-bstv[f-1])/(i*i)); for(; j >= f; --j) dfs(f-1, bufs+2*i*j, bufv-i*i*j, i, j); } } int main() { int i, n; scanf("%d%d", &n, &m); bstv[0] = 0; for(i = 1; i <= m; ++i) bstv[i] = bstv[i-1] + i*i*i; bsts = INF; dfs(m, 0, n, (int)sqrt(n+1), n+1); bsts == INF ? printf("0") : printf("%d", bsts); return 0; }
相关文章推荐
- DFS:POJ1190-生日蛋糕(基础搜索)
- POJ 1190-生日蛋糕(dfs 深度搜索 优化减枝)
- POJ 1190生日蛋糕(隐式BFS)
- POJ 1190 生日蛋糕 搜索加剪枝
- POJ 1190 生日蛋糕 搜索dfs
- 生日蛋糕(搜索)poj 1190
- POJ1190_生日蛋糕_深搜
- POJ - 3414 (隐式图搜索+记录路径)
- POJ 1190 生日蛋糕 DFS + 剪枝
- poj——1190——生日蛋糕
- poj 1190 生日蛋糕 dfs 剪枝
- poj 1564 / zoj 1711 深搜 隐式图搜索
- POJ_1190_生日蛋糕
- POJ 1190 生日蛋糕(深搜+剪枝)
- POJ 1190 生日蛋糕(DFS:优化剪枝)
- POJ1190 洛谷P1731 NOI1999 生日蛋糕
- 生日蛋糕 POJ - 1190
- POJ 1190生日蛋糕
- poj 1190 生日蛋糕
- poj 1190 生日蛋糕(dfs, 剪枝)