递推DP URAL 1119 Metro
2015-05-06 19:34
357 查看
题目传送门
/* 题意:已知起点(1,1),终点(n,m);从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0); 递推DP:仿照JayYe,处理的很巧妙,学习:) 好像还要滚动数组,不会,以后再补 */ #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstring> using namespace std; const int MAXN = 1e3 + 10; const int INF = 0x3f3f3f3f; double dp[MAXN][MAXN]; int used[MAXN][MAXN]; int a[MAXN][MAXN]; int main(void) //URAL 1119 Metro { freopen ("C.in", "r", stdin); int n, m, k; while (scanf ("%d%d", &n, &m) == 2) { scanf ("%d", &k); int u, v; memset (used, 0, sizeof (used)); while (k--) {scanf ("%d%d", &u, &v); used[u][v] = true;} for (int i=0; i<=n; ++i) { for (int j=0; j<=m; ++j) { if (!i && !j) dp[i][j] = 0; else if (!i) dp[1][j] = dp[1][j-1] + 1; else if (!j) dp[1][j] = dp[0][j] + 1; else dp[1][j] = min (dp[1][j-1], dp[0][j]) + 1; if (used[i][j]) dp[1][j] = min (dp[0][j] + 1, dp[0][j-1] + sqrt (2.0)); } } printf ("%.0f\n", dp[1][m] * 100); } return 0; }
相关文章推荐
- Ural_1119. Metro(DP)
- URAL 1119 Metro (DP动态规划)
- URAL 1119. Metro(简单dp)
- Ural 1119 Metro(DP)
- Ural 1119 Metro(DP) .
- URAL1119——DP——Metro
- ural 1119. Metro(dp)
- URAL 1119. Metro(DP)
- ural 1119 Metro
- URAL 1009 K-based numbers(DP递推)
- Ural 1119 Metro
- 递推DP URAL 1081 Binary Lexicographic Sequence
- URAL 1119 Metro (动态规划)
- ural 1119 Metro
- Metro(Ural_1119)
- URAL1119 Metro
- 递推DP URAL 1353 Milliard Vasya's Function
- URAL 1119 Metro
- Metro-Ural119递推
- 递推DP URAL 1260 Nudnik Photographer