3 条题解

  • 1
    @ 2025-7-22 9:51:35

    #include<bits/stdc++.h> #define int long long const int inf = 0x3f3f3f3f; const int N = 51; using namespace std; int dp[N][N][N][N]; int a[N][N]; signed main(){ int n , m; cin >> n >> m; for(int i = 1 ; i <= n ; i ++){ for(int j = 1 ; j <= m ; j ++){ cin >> a[i][j]; } } for(int i = 1 ; i <= n ; i ++){ for(int j = 1 ; j <= m ; j ++){ for(int p = 1 ; p <= n ; p ++){ for(int q = 1 ; q <= m ; q ++){ int v = max(max(dp[i - 1][j][p - 1][q] , dp[i - 1][j][p][q - 1]) , max(dp[i][j - 1][p][q - 1] , dp[i][j - 1][p - 1][q])); if(i == p && j == q){ dp[i][j][p][q] = v + a[i][j]; }else{ dp[i][j][p][q] = v + a[i][j] + a[p][q]; } } } } } cout << dp[n][m][n][m]; return 0; }

    • 1
      @ 2025-7-22 9:35:52

      传送门:题目详情 - 传纸条 - JMYSOJ (jmfes.com) #include <bits/stdc++.h> using namespace std;

      int a[60][60]; int dp[60][60][60][60];

      int main(){ int m, n; cin >> m >> n; for(int i = 1; i <= m; i ++){ for(int j = 1; j <= n; j ++){ cin >> a[i][j]; } } for (int i = 1; i <= m; i ++) { for (int j = 1; j <= n; j ++) { for (int p = 1; p <= m; p ++) { for (int q = 1; q <= n; q ++) { int v = max(max(dp[i - 1][j][p - 1][q], dp[i - 1][j][p][q - 1]), max(dp[i][j - 1][p][q - 1], dp[i][j - 1][p - 1][q])); if(i == p && j == q){ dp[i][j][p][q] = v + a[i][j]; } else { dp[i][j][p][q] = v + a[i][j] + a[p][q]; } } } } } cout << dp[m][n][m][n]; return 0; } // wo 1100 //luogu 1382

      • 1
        @ 2025-7-22 8:18:40

        #include<bits/stdc++.h> using namespace std; int m,n,a[55][55],dp[110][55][55];

        int main(){ cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>a[i][j];

        for(int k=2;k<=m+n;k++){
            for(int i1=1;i1<=m;i1++){
                for(int i2=1;i2<=m;i2++){
                    int j1=k-i1, j2=k-i2;
                    if(j1<1||j1>n||j2<1||j2>n) continue;
                    
                    int val=max({dp[k-1][i1][i2], dp[k-1][i1-1][i2],
                                dp[k-1][i1][i2-1], dp[k-1][i1-1][i2-1]});
                    
                    if(i1==i2) dp[k][i1][i2]=val+a[i1][j1];
                    else dp[k][i1][i2]=val+a[i1][j1]+a[i2][j2];
                }
            }
        }
        cout<<dp[m+n][m][m];
        return 0;
        

        }

        • 1

        信息

        ID
        524
        时间
        1000ms
        内存
        256MiB
        难度
        8
        标签
        (无)
        递交数
        107
        已通过
        19
        上传者