记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
2015-05-12 16:18
701 查看
题目传送门
/* 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 ans = min (ans, max (dp[x][y-i], dp[x-1][i-1]) + 1);前者表示蛋没碎,则往高处(y-i)搜索 后者表示蛋碎了,往低处(i-1)方向搜索 这样写不好,每次memset (dp)就会超时:( 详细解释:http://blog.csdn.net/fulongxu/article/details/27110435 */ #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <cmath> using namespace std; const int MAXN = 1e3 + 10; const int INF = 0x3f3f3f3f; int dp[11][MAXN]; int DFS(int x, int y) { if (dp[x][y]) return dp[x][y]; if (x == 1) {dp[x][y] = y; return y;} if (y <= 2) {dp[x][y] = y; return y;} int ans = INF; for (int i=2; i<y; ++i) { int tmp = max (DFS (x, y-i) + 1, DFS (x-1, i-1) + 1); ans = min (ans, tmp); } return dp[x][y] = ans; } int main(void) //URAL 1223 Chernobyl’ Eagle on a Roof { //freopen ("Z.in", "r", stdin); int n, m; while (scanf ("%d%d", &n, &m) == 2) { if (!n && !m) break; if (n > 10) n = 10; printf ("%d\n", DFS (n, m)); } return 0; }
相关文章推荐
- 【URAL 1223】Chernobyl’ Eagle on a Roof(传说中的DP神优化之鹰蛋)
- URAL1223——DFS—— Chernobyl’ Eagle on a Roof
- URAL 1223 Chernobyl’ Eagle on a Roof
- URAL1223 Chernobyl’ Eagle on a Roof(dp)
- 1223. Chernobyl’ Eagle on a Roof
- URAL 1223. Chernobyl’ Eagle on a Roof(记忆化搜索)
- ural 1223. Chernobyl’ Eagle on a Roof
- Chernobyl’ Eagle on a Roof(鹰蛋坚固度)
- Ural 1223.Chernobyl’ Eagle on a Roof
- 记忆化搜索(DFS+DP) URAL 1501 Sense of Beauty
- 1223. Chernobyl’ Eagle on a Roof(dp)&&poj3783
- 记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence
- URAL 1223. Chernobyl’ Eagle on a Roof
- URAL 1223. Chernobyl’ Eagle on a Roof
- URAL 1167. Bicolored Horses(二维dp或者记忆化搜索)
- ural 1056 Computer Net(树形DP)需要用到两遍dfs
- ural1223 鹰蛋(dp优化)
- uva10285 Longest Run on a Snowboard(dp之记忆化搜索 )
- 暑期dp46道(41)--HDOJ 1978 How many ways dfs + 记忆化搜索
- 【算法设计与数据结构】URAL 1152.False Mirrors(状态压缩dp+dfs)