1360 xth 的玫瑰花

1360 xth 的玫瑰花

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 
 
 
题目描述 Description

这天是rabbit 的生日前夕,Xth 来到花店,要给他的rabbit 买玫瑰花,为了保证质
量,他跟花店老板——小菜儿同学要求自己到花田采摘。小菜儿灰常希望早日见到
暖熊(xth 儿子的小名),于是他决定帮忙。
小菜儿告诉xth,花田是一个n ∗ m的矩形区域,里面有红玫瑰和黑玫瑰两种玫瑰。
Xth 探明了每一块小区域内红玫瑰和黑玫瑰的种植量,并且还在花田的北边和西边
分别设置了红玫瑰和黑玫瑰的收集站(地图上上北下南左西右东)。你的任务是设
计一个运输线系统,使得运送的红玫瑰和黑玫瑰的总量最多。
运输线有两种,一种是东西向,一种是南北向。在一个格子内你能建造一种运输线,
但不能两种都建。如果两个同类型运输线首尾相接,它们就可以被连接起来。
另外,这些玫瑰都十分不稳定,因此它们在运送过程中都不能拐弯。这就意味着如
果某个格子上建有南北向运输线,但是它北边的格子建有东西向运输线。那么这条
南北向运输线内运送的任何东西都将丢失。进一步地,运到红玫瑰收集点的黑玫瑰
会丢失,运到黑玫瑰收集点的红玫瑰也会丢失。

输入描述 Input Description

第一行包含两个整数n和m,表示花田大小。 以下n行,每行m个整数,其中第i行
第j个整数g[ i ,j ] 描述各个格子上的黑玫瑰数量。接下来以类似的矩阵表示各个格
子上的红玫瑰数量。

输出描述 Output Description

仅一个整数, 表示最多可以采集到的红玫瑰和黑玫瑰的总量。

样例输入 Sample Input

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

样例输出 Sample Output

98

数据范围及提示 Data Size & Hint

对于30%的数据: 0 ≤ n, m ≤ 100;
对于100%的数据: 0 ≤ n,m ≤ 1000;
0 ≤ g[ i,j ] ≤ 1000.

分类标签 Tags 点此展开 

 
题解:
由题意可知,对于每一个点(i,j)只能往上走 或 往左走
所以就可以搞了。
R[i][j]表示第j列前i行的红玫瑰数量之和
B[i][j]表示第i行前j列的黑玫瑰数量之和
(求其他前缀和没有意义)
f[i][j]表示(1,1)->(i,j)这个矩形中的红玫瑰数量+黑玫瑰数量的最大值
自行初始化。
转移方程:
f[i][j]=max(f[i-1][j]+B[i][j],f[i][j-1]+R[i][j]);

 

ans:f[n][m]
时间复杂度:O(n*m)
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1003;
inline const int read(){
    register int x=0,f=1;
    register char ch=getchar();
    while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
int B[N][N],R[N][N],f[N][N];
int main(){
    int n=read(),m=read();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            B[i][j]=read(),B[i][j]+=B[i][j-1];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            R[i][j]=read(),R[i][j]+=R[i-1][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            f[i][j]=max(f[i-1][j]+B[i][j],f[i][j-1]+R[i][j]);
        }
    }
    printf("%d\n",f[n][m]);
    return 0;
}

 

 

 

posted @ 2016-09-30 10:02  神犇(shenben)  阅读(180)  评论(0编辑  收藏  举报