• Luogu2295 MICE


    Lougu2295 MICE

    给一个 (n imes m) 的矩阵 (a) ,求一条从 ((1, 1))((n, m)) 的最短路径,使得与路径相接的所有网格的权值和最小

    (n, mleq10^3, 0leq a_{i,j}leq100)

    dp


    (f_{0/1, i, j}) 表示,走到 ((i, j)) 时,上一步是向下走/向右走的最优值

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    #define nc getchar()
    const int maxn = 1010;
    int n, m, a[maxn][maxn], f[2][maxn][maxn];
    
    inline int read() {
      int x = 0; char c = nc;
      while (c < 48) c = nc;
      while (c > 47) x = x * 10 + c - 48, c = nc;
      return x;
    }
    
    int main() {
      n = read(), m = read();
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
          a[i][j] = read();
        }
      }
      memset(f, 0x3f, sizeof f);
      f[0][1][1] = f[1][1][1] = a[1][1] + a[1][2] + a[2][1];
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
          if (i == 1 && j == 1) continue;
          f[0][i][j] = min(f[0][i - 1][j] + a[i][j - 1], f[1][i - 1][j]) + a[i + 1][j] + a[i][j + 1];
          f[1][i][j] = min(f[0][i][j - 1], f[1][i][j - 1] + a[i - 1][j]) + a[i + 1][j] + a[i][j + 1];
        }
      }
      printf("%d", min(f[0][n][m], f[1][n][m]));
      return 0;
    }
    
  • 相关阅读:
    Domain Logic approaches
    Comparing Spring AOP and AspectJ
    CDI Features
    Java Design Patterns
    第二阶段:代码片段
    第一阶段:学生在线系统需求分析报告
    load data语句实验报告
    Sping AOP Capabilities and Goals
    Java Design Patterns
    CDI Features
  • 原文地址:https://www.cnblogs.com/Juanzhang/p/10361604.html
Copyright © 2020-2023  润新知