[poj 2948]Martian Mining
Posted studyingfather
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[poj 2948]Martian Mining相关的知识,希望对你有一定的参考价值。
题目链接
http://poj.org/problem?id=2948
大意
在m*n的矿区中,储存着两种矿石(b种和y种),其中b种矿石只能向北运输,y种矿石只能向东运输,现在要铺设传送带(不能拐弯),求出能运送矿石的最大值。
题解
先用前缀和的技巧把南北向和东西向的矿石数量算出来。然后就是简单的dp了。
1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 using namespace std; 5 int f[505][505],b[505][505],y[505][505]; 6 int main() 7 { 8 int n,m; 9 while(~scanf("%d%d",&n,&m)&&n&&m) 10 { 11 memset(f,0,sizeof(f)); 12 memset(y,0,sizeof(y)); 13 memset(b,0,sizeof(b)); 14 for(int i=1;i<=n;i++) 15 for(int j=1;j<=m;j++) 16 { 17 scanf("%d",&y[i][j]); 18 y[i][j]+=y[i][j-1]; 19 } 20 for(int i=1;i<=n;i++) 21 for(int j=1;j<=m;j++) 22 { 23 scanf("%d",&b[i][j]); 24 b[i][j]+=b[i-1][j]; 25 } 26 for(int i=1;i<=n;i++) 27 for(int j=1;j<=m;j++) 28 f[i][j]=max(f[i-1][j]+y[i][j],f[i][j-1]+b[i][j]); 29 printf("%d\n",f[n][m]); 30 } 31 return 0; 32 }
以上是关于[poj 2948]Martian Mining的主要内容,如果未能解决你的问题,请参考以下文章
POJ 3592--Instantaneous TransferenceSCC缩点新建图 && SPFA求最长路 && 经典(示例代(代