码迷,mamicode.com
首页 > 其他好文 > 详细

[poj 2948]Martian Mining

时间:2018-04-14 23:26:40      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:ems   图片   color   src   分享   lang   最大   std   技术分享   

题目链接

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

标签:ems   图片   color   src   分享   lang   最大   std   技术分享   

原文地址:https://www.cnblogs.com/StudyingFather/p/8440324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!