zoukankan      html  css  js  c++  java
  • 洛谷P2380 狗哥采矿

    P2380 狗哥采矿

    题目背景

    又是一节平静的语文课

    狗哥闲来无事,出来了这么一道题

    题目描述

    一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少。最北边有bloggium的收集站,最西边有 yeyenum 的收集站。现在要你在这些格子上面安装向北或者向西的传送带(每个格子只能装一种)。问最多能采到多少矿?

    输入输出格式

    输入格式:

    第一行包含两个整数n,m,( 1 ≤ n ≤ 500, 1 ≤ m ≤ 500)。接下来n行m列,表示每个格子中可以传送到yeyenum的数量(小于1000),再接下来n行m列,表示每个格子中可以传送到bloggium的数量。n, m 同时为0结束。

    输出格式:

    每组测试数据仅输出一个数,表示最多能采到的矿。

    输入输出样例

    输入样例#1:
    4 4
    0 0 10 9 
    1 3 10 0
    4 2 1 3 
    1 1 20 0 
    10 0 0 0 
    1 1 1 30 
    0 0 5 5 
    5 10 10 10 
    0 0
    输出样例#1:
    98

    说明

    传输过程中不能转弯,只能走直路。

    /*
        我们定义f[i][j]f[i][j]为在以(i,j)(i,j)为右下角的子矩阵中的最大采矿量,由题意我们可知,如果(i,j)(i,j)是向左转移矿,那么(i,j-1)(i,j?1),一定也是向左,(i,j-2)(i,j?2)一直到(i,1)(i,1)都是向左,同理如果(i,j)(i,j)是向上转移矿,那么(i-1,j)(i?1,j),一定也是向上,(i-2,j)(i?2,j)一直到(1,j)(1,j)都是向左。这就可以其实我们用前缀和去维护一段区间的采矿量。
        在转移时,我们只关心当前(i,j)(i,j)的采矿方向。设A[i][j]A[i][j]为向上的前缀和,B[i][j]B[i][j]为向左的前缀和,那么转移方程f[i][j]=max(f[i-1][j]+B[i][j],f[[i][j-1]+A[i][j])f[i][j]=max(f[i?1][j]+B[i][j],f[[i][j?1]+A[i][j]).
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    #define maxn 510
    int n,m,a[maxn][maxn],b[maxn][maxn],f[maxn][maxn],ans;
    int main(){
        while(1){
            scanf("%d%d",&n,&m);
            if(n==0&&m==0)return 0;
            memset(f,0,sizeof(f));
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            ans=0;
            int x;
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++){
                    scanf("%d",&x);
                    a[i][j]=a[i][j-1]+x;
                }
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++){
                    scanf("%d",&x);
                    b[i][j]=b[i-1][j]+x;
                }
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++){
                    f[i][j]=max(f[i-1][j]+a[i][j],f[i][j-1]+b[i][j]);
                    ans=max(f[i][j],ans);
                }
            printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    PAIRING WORKFLOW MANAGER 1.0 WITH SHAREPOINT 2013
    Education resources from Microsoft
    upgrade to sql server 2012
    ULSViewer sharepoint 2013 log viewer
    Top 10 Most Valuable Microsoft SharePoint 2010 Books
    讨论 Setsockopt选项
    使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
    Nagle's algorithm
    Nagle算法 TCP_NODELAY和TCP_CORK
    Design issues Sending small data segments over TCP with Winsock
  • 原文地址:https://www.cnblogs.com/thmyl/p/7608120.html
Copyright © 2011-2022 走看看