zoukankan      html  css  js  c++  java
  • codeforce429B_多线程只有一个相遇点

    题目链接:http://codeforces.com/contest/429/problem/B

    题意:给你一个矩阵,一个人从(1, 1) ->(n, m), 一个人从(n, 1) ->(1, m), 必须 有一个相遇点, 相遇点的值不能被得到, 问两个人能得到的最大值和是多少?

    思路, dp1[i][j] 是从(1, 1)到达(i, j)时的最大值,同理, 看代码

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cstdlib>
     6 #include <cmath>
     7 #include <set>
     8 #include <map>
     9 #define LL long long
    10 #include <vector>
    11 using namespace std;
    12 
    13 const int N = 1005;
    14 LL num[N][N];
    15 LL dp1[N][N], dp2[N][N], dp3[N][N], dp4[N][N], dp[N][N];
    16 int main()
    17 {
    18     int n, m;
    19     scanf("%d %d", &n, &m);
    20     memset(dp1, 0, sizeof(dp1));
    21     memset(dp2, 0, sizeof(dp2));
    22     memset(dp3, 0, sizeof(dp3));
    23     memset(dp4, 0, sizeof(dp4));
    24     memset(dp, 0, sizeof(0));
    25     for(int i = 1; i <= n; i++)
    26         for(int j = 1; j <= m; j++)
    27             scanf("%I64d", &num[i][j]);
    28     for(int i = 1; i <= n; i++)
    29         for(int j = 1; j <= m; j++)
    30             dp1[i][j] = max(dp1[i - 1][j], dp1[i][j - 1]) + num[i][j];
    31     for(int i = 1; i <= n; i++)
    32         for(int j = m; j > 0; j--)
    33             dp2[i][j] = max(dp2[i - 1][j], dp2[i][j + 1]) + num[i][j];
    34     for(int i = n; i > 0; i--)
    35         for(int j = 1; j <= m; j++)
    36             dp3[i][j] = max(dp3[i + 1][j], dp3[i][j - 1]) + num[i][j];
    37     for(int i = n; i > 0; i--)
    38         for(int j = m; j > 0; j--)
    39             dp4[i][j] = max(dp4[i + 1][j], dp4[i][j + 1]) + num[i][j];
    40     LL res = 0;
    41     for(int i = 2; i < n; i++)
    42         for(int j = 2; j < m; j++){
    43             res = max(res, dp1[i - 1][j] + dp2[i][j + 1] + dp3[i][j - 1] + dp4[i + 1][j]);//因为(i, j)后退的方向只有四个,四个方向来的情况只有两种情况,自行想象一下
    44             res = max(res, dp1[i][j - 1] + dp2[i - 1][j] + dp3[i + 1][j] + dp4[i][j + 1]);
    45         }
    46     printf("%I64d
    ", res);
    47     return 0;
    48 }
  • 相关阅读:
    php2
    11-14php
    三层嵌套
    常见的浏览器兼容
    css中的一些问题及解决方法
    css
    html
    测试题
    正则表达式
    Math对象
  • 原文地址:https://www.cnblogs.com/luomi/p/5559629.html
Copyright © 2011-2022 走看看