[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 }
View Code

 

以上是关于[poj 2948]Martian Mining的主要内容,如果未能解决你的问题,请参考以下文章

TOJ 1800 Martian Mining(二维dp)

UVALive - 3530:Martian Mining

Martian Mining_DP&&DFS

Martian Addition

POJ 3592--Instantaneous TransferenceSCC缩点新建图 &amp;&amp; SPFA求最长路 &amp;&amp; 经典(示例代(代

发售提醒:Air Jordan 7 “Marvin The Martian”