http://poj.org/problem?id=2948

意:一个row*col的矩阵,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少。如图所示,最北边有bloggium的收集站,最西边有 yeyenum 的收集站,

要你在这些格子上面安装向北或者向西的传送带(每个格子自能装一种)。问最多能采到多少矿(yeyenum+bloggium)?

这道 dp 1A,完全自己写的,有点小兴奋,dp菜鸟在进步。。。。。。。,
首先 开始想时
想了一个 dp 方程 最后验证是错的;
后来自己有想了一下 ,得到了正确的 状态方程

dp[i][j][0] 表示 以 i,j 为右下角的 矩形 i,j 这点 选择向北 的最大值
dp[i][j][1]  是选择向西的最大值

ans = max(dp[n][m][0],dp[n][m][1]);
状态转移:

dp[i][j][0] = 第 j 列求和 + max(dp[i][j - 1][0],dp[i][j - 1][1]);

dp[i][j][1] = 第 i 行 求和 + max(dp[i - 1][j][0],dp[i - 1][j][1]);
*/

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 #include<set>
 8 #include<map>
 9 #define Min(a,b)  a>b?b:a
10 #define Max(a,b)  a>b?a:b
11 #define CL(a,num)  memset(a,num,sizeof(a));
12 #define inf 9999999
13 #define maxn 400
14 #define mod (1000000000 + 7)
15 #define eps  1e-6
16 #define ll long long
17 using namespace std;
18 ll dp[maxn][maxn][2];//0 上 1 左
19 ll matu[maxn][maxn],matw[maxn][maxn];
20 int main()
21 {
22     int n,m,i,j,t1;
23     while(scanf("%d%d",&n,&m),n + m)
24     {
25         for(i = 1 ; i <= n; ++i)
26          for(j = 1; j <= m ; ++j)
27          {
28              scanf("%lld",&matw[i][j]);
29          }
30
31          for(i = 1;  i <= n ; ++i)
32          {
33              for(j = 1; j <= m ;++j)
34              scanf("%lld",&matu[i][j]);
35          }
36          CL(dp,0);
37
38          int sum = 0,k;
39          for( i = 1 ; i <= n ;++i)
40          {
41              for( j = 1; j <= m; ++j )
42              {
43                  sum = 0;
44                  for(k = i ; k >= 1; --k)sum += matu[k][j];
45
46                  dp[i][j][0] = sum + max(dp[i][j - 1][0],dp[i][j - 1][1]);
47
48                  sum = 0;
49                  for(k = j ;k >= 1; --k) sum += matw[i][k];
50
51                  dp[i][j][1] = sum + max(dp[i - 1][j][0],dp[i - 1][j][1]);
52
53              }
54          }
55
56          printf("%lld\n",max(dp[n][m][0],dp[n][m][1]));
57
58
59     }
60 }

转载于:https://www.cnblogs.com/acSzz/archive/2012/08/11/2634007.html

poj 2948 Martian Mining (dp)相关推荐

  1. uva 1366 - Martian Mining(dp)

    题目链接:uva 1366 - Martian Mining 题目大意:给出n和m,然后给出两种矿的分布,a种只能向上运输,b中只能向下运输,问说最多可以得到多少. 解题思路:dp[i][j]表示矩阵 ...

  2. UVa 1366 - Martian Mining (dp)

    本文出自   http://blog.csdn.net/shuangde800 题目链接: 点击打开链接 题目大意 给出n*m网格中每个格子的A矿和B矿数量,A矿必须由右向左运输,B矿必须由下向上运输 ...

  3. UVA 1366 Martian Mining DP

    为了方便,记从右到左运输的为A矿,从下到上运输的为B矿. 首先,假如我们在第i行的前k格架了运输管道运输这K个格子的A矿,那么对于i下面的其他行最少都能架上k格管子,因为不架也是浪费,这一片区域的B矿 ...

  4. 递推DP UVA 1366 Martian Mining

    题目传送门 1 /* 2 题意:抽象一点就是给两个矩阵,重叠的(就是两者选择其一),两种铺路:从右到左和从下到上,中途不能转弯, 3 到达边界后把沿途路上的权值相加求和使最大 4 DP:这是道递推题, ...

  5. poj 1185(状压dp)

    题目链接:http://poj.org/problem?id=1185 思路:状态压缩经典题目,dp[i][j][k]表示第i行状态为j,(i-1)行状态为k时最多可以放置的士兵个数,于是我们可以得到 ...

  6. [POJ 1742] Coins 【DP】

    题目链接:POJ - 1742 题目大意 现有 n 种不同的硬币,每种的面值为 Vi ,数量为 Ni ,问使用这些硬币共能凑出 [1,m] 范围内的多少种面值. 题目分析 使用一种 O(nm) 的 D ...

  7. poj 3254 状压dp

    E - Corn Fields Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

  8. POJ 1088----滑雪(DP)

    原题连接:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...

  9. POJ 1692 Crossed Matchings dp[][] 比较有意思的dp

    http://poj.org/problem?id=1692 这题看完题后就觉得我肯定不会的了,但是题解却很好理解.- - ,做题阴影吗 所以我还是需要多思考. 题目是给定两个数组,要求找出最大匹配数 ...

最新文章

  1. 揭开神秘的“记忆”面纱!
  2. Ajax服务器响应简单实例
  3. linux内核模块常见问题
  4. c语言学习-利用函数指针的方法,求任意给出两个整数的x和y的和、差。
  5. STM8单片机ADC连续采样模式
  6. python实现模拟浏览器登录_Python使用win32com实现的模拟浏览器功能示例
  7. ReflectionZ_测试_01
  8. linux syslog 删除文件_恢复日志文件syslog在Linux中删除的方法
  9. python 字符串 换行_Python基础教程——字符串
  10. 深度学习和机器学习的相关资料
  11. fpgrowth算法实战 mlib_Spark MLlib FPGrowth关联规则算法
  12. Python 人脸识别系统
  13. 怎么使用手机号申请邮箱,注册移动手机邮箱有哪些步骤?
  14. UML 核心元素之参与者
  15. iPhone上塔罗牌测试软件,塔罗牌占卜:测Ta对你是用情至深还是一时兴起?准到没朋友!...
  16. 史上最新最全的ADB命令行
  17. 完美世界(完美世界(北京)网络技术有限公司)
  18. flutter packages get 慢 解决方案
  19. ASCII 控制码说明
  20. 传感器课程实验:传感器静态特性研究-应变式传感器

热门文章

  1. linux 固定usb设备,linux下多个usb设备固定名称方法
  2. linux怎么给所有用户安装软件,Linux安装软件的几种方法
  3. 服务器版的mysql怎么装_WIN7服务器配置之MySQL数据库安装图解(适用于5.1,5.5的版本)...
  4. Qt WebSocket服务端的简单Demo
  5. 【转载】博士生的女朋友有话要说!
  6. [模版] 网络流最大流、费用流
  7. 迷宫pascal程序
  8. linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器
  9. python中序列和列表区别细菌真菌病毒_python是哪种动物_动物的分类
  10. three.js glb 多个_25万的预算,奔驰GLB、宝马X1、奥迪Q3该怎么选