zoukankan      html  css  js  c++  java
  • codeforces 429B Working out

    题意:矩阵  一条线从左上到右下  ,一条 右上到左下, 只能有一个交点,且交点值不算,问你一共能得到多大的值。

    解题思路:先求出四个矩阵, 然后枚举点和进入点的方式即可,这里dp问题需要特别考虑边界。

    解题代码:

     1 // File Name: 429b.cpp
     2 // Author: darkdream
     3 // Created Time: 2015年03月08日 星期日 10时13分53秒
     4 
     5 #include<vector>
     6 #include<list>
     7 #include<map>
     8 #include<set>
     9 #include<deque>
    10 #include<stack>
    11 #include<bitset>
    12 #include<algorithm>
    13 #include<functional>
    14 #include<numeric>
    15 #include<utility>
    16 #include<sstream>
    17 #include<iostream>
    18 #include<iomanip>
    19 #include<cstdio>
    20 #include<cmath>
    21 #include<cstdlib>
    22 #include<cstring>
    23 #include<ctime>
    24 #define LL long long
    25 using namespace std;
    26 int a[1005][1005];
    27 int ldp[1005][1005];
    28 int rdp[1005][1005];
    29 int udp[1005][1005];
    30 int ddp[1005][1005];
    31 int main(){
    32   int n , m; 
    33   scanf("%d %d",&n,&m);
    34   for(int i =1;i <= n;i ++)
    35       for(int j = 1;j <= m;j ++)
    36           scanf("%d",&a[i][j]);
    37   for(int i = 1;i <= n;i ++)
    38   {
    39      for(int j = 1;j <= m;j ++)
    40      {
    41         ldp[i][j] = a[i][j] + max(ldp[i][j-1],ldp[i-1][j]);
    42      }
    43   }
    44   for(int i = n;i >=1;i --)
    45   {
    46      for(int j = 1;j <= m;j ++)
    47      {
    48         rdp[i][j] = a[i][j] + max(rdp[i][j-1],rdp[i+1][j]);
    49      }
    50   }
    51   for(int i = n;i >=1;i --)
    52   {
    53      for(int j = m;j >=1;j --)
    54      {
    55         udp[i][j] = a[i][j] + max(udp[i][j+1],udp[i+1][j]);
    56      }
    57   }
    58   for(int i = 1;i <= n;i ++)
    59   {
    60      for(int j = m ;j >=1 ;j --)
    61      {
    62         ddp[i][j] = a[i][j] + max(ddp[i][j+1],ddp[i-1][j]);
    63      }
    64   }
    65   int sum = 0 ; 
    66   for(int i = 2;i < n;i ++)
    67       for(int j = 2;j < m;j ++)
    68       {
    69           int tsum = sum; 
    70           sum = max(sum,ldp[i-1][j] + udp[i+1][j] + rdp[i][j-1] + ddp[i][j+1]) ;  
    71           sum = max(sum,rdp[i+1][j] + ddp[i-1][j] + ldp[i][j-1] + udp[i][j+1]) ;  
    72       }
    73   printf("%d
    ",sum);
    74 return 0;
    75 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    帆软报表之改变局部行字体加粗变色显示
    帆软报表统计所有行
    Solr7.4.0的API(Solrj)操作(转载)
    solr安装-tomcat+solrCloud构建稳健solr集群(转载)
    solr安装-tomcat单机版(转载)
    mysql优化
    systemctl管理Tomcat启动、停止、重启、开机启动
    fatal: unable to access 'https://github.com:***' 或者本机ping不通github.com解决方法
    java通过使用Thumbnails实现图片压缩放大
    java实现动态Excle模板文件导入
  • 原文地址:https://www.cnblogs.com/zyue/p/4321450.html
Copyright © 2011-2022 走看看