关于我奇怪的dp得了90分这件事……

P1434 [SHOI2002] 滑雪

`bellman-ford`。
by Usada_Pekora @ 2023-02-21 18:00:46


这种思路我以前用过,循环 n*m 次能过
by vzcx_host @ 2023-02-21 18:02:23


@[空中之虎](/user/183344) ```cpp #include <bits/stdc++.h> const int x[] = {0, 1, -1, 0, 0}; const int y[] = {0, 0, 0, 1, -1}; int map[110][110]; int dp[110][110]; int ans = -1; int main() { int n, m; std::cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { scanf ("%d", &map[i][j]); dp[i][j] = 1; } } for (int b = 1; b <= n * m; b++) { bool upd = false; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { for (int k = 1; k <= 4; k++) { if (map[i][j] > map[i + x[k]][j + y[k]]) if (dp[i + x[k]][j + y[k]] + 1 > dp[i][j]) dp[i][j] = dp[i + x[k]][j + y[k]] + 1, upd = true; } ans = std::max(ans, dp[i][j]); } } if (!upd) break; } std::cout << ans; return 0; } ```
by Usada_Pekora @ 2023-02-21 18:06:29


其实不算什么很新的思路,建图然后跑最长路。
by Usada_Pekora @ 2023-02-21 18:09:29


@[Industrial_banana](/user/193198) 我也试了循环n * m次,结果TLE了hhh
by 空中之虎 @ 2023-02-21 18:44:50


@[Usada_Pekora](/user/434929) 大概看明白了 谢谢大佬!
by 空中之虎 @ 2023-02-21 18:45:23


|