Date:2022.03.25
题目描述
一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少。最北边有bloggium的收集站,最西边有 yeyenum 的收集站。现在要你在这些格子上面安装向北或者向西的传送带(每个格子只能装一种)。问最多能采到多少矿?

输入格式
第一行包含两个整数n,m,( 1 ≤ n ≤ 500, 1 ≤ m ≤ 500)。接下来n行m列,表示每个格子中可以传送到yeyenum的数量(小于1000),再接下来n行m列,表示每个格子中可以传送到bloggium的数量。n, m 同时为0结束。

输出格式
每组测试数据仅输出一个数,表示最多能采到的矿。

输入输出样例
输入 #1复制
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
0 0
输出 #1复制
98
说明/提示
传输过程中不能转弯,只能走直路。

思路:不能转弯指的是每种物品只能由 ( i , j ) (i,j) (i,j)到 ( i , 1 ) (i,1) (i,1)或 ( 1 , j ) (1,j) (1,j)。假设 ( i , j ) (i,j) (i,j)到 ( i , j − 1 ) (i,j-1) (i,j−1),那么这一步显然是向左传送了,因此下一步便不能再向上传送,因此 ( i − 1 , j ) (i-1,j) (i−1,j)的物品只能由于 ( i , j ) (i,j) (i,j)的限制而被迫向左移动,一直这样直到 ( 1 , j ) (1,j) (1,j);向上同理。
我们规定 f [ i ] [ j ] : f[i][j]: f[i][j]: ( 1 , 1 ) (1,1) (1,1)到 ( i , j ) (i,j) (i,j)这个矩形只能走直路下的最大采矿量。
a [ i ] [ j ] : a[i][j]: a[i][j]:从 ( i , j ) (i,j) (i,j)一路向左到 ( i , 1 ) (i,1) (i,1)的前缀和,表示这一段都必须向左走。
b [ i ] [ j ] : b[i][j]: b[i][j]:从 ( i , j ) (i,j) (i,j)一路向上到 ( 1 , j ) (1,j) (1,j)的前缀和,表示这一段都必须向上走。
代码如下:

#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long LL;
typedef pair<LL, LL> PII;
const LL N = 550,INF=0x3f3f3f3f3f3f3f3f;
typedef long long LL;
LL t,n,m,k,a[N][N],f[N][N],b[N][N];
bool st[N];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);while(cin>>n>>m,n||m){memset(f,0,sizeof f);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) {cin>>a[i][j];a[i][j]+=a[i][j-1];}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) {cin>>b[i][j];b[i][j]+=b[i-1][j];}//固定了f[i][j]往左,f[i][j-1]~f[i][1]必定都往左//固定了f[i][j]往上,f[i-1][j]~f[1][j]必定都往上for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)f[i][j]=max(f[i-1][j]+a[i][j],f[i][j-1]+b[i][j]);cout<<f[n][m]<<'\n';}return 0;
}

洛谷P2380 狗哥采矿【DP】【绿】相关推荐

  1. 洛谷P2380 狗哥采矿

    P2380 狗哥采矿 题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是 ...

  2. P2380 狗哥采矿 (二维dp)

    原题链接:狗哥采矿 - 洛谷 思路:我一开始想的是,一个点往左走还是往上走与 它上面和左边的点走的方向有关系,但是感觉复杂交错.....然后看到了大佬的二维dp,其实Aij往左走,就让它左边的这一条都 ...

  3. 洛谷 P1063 能量项链 区间dp

    洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...

  4. 洛谷P1410 子序列【玄学DP】【绿】

    Date:2022.03.23 题目描述 给定一个长度为 NN(NN 为偶数)的序列,问能否将其划分为两个长度为 N / 2N/2 的严格递增子序列. 输入格式 若干行,每行表示一组数据. 对于每组数 ...

  5. 洛谷3426 [POI2005]SZA-Template 恶臭dp+kmp

    前言 做这道题时,我和巨神yxc在洛咕上看到了一篇代码奇短的题解,然后看解析,发现里面的证明都是"显然"."很简单",被臭到. 于是zyd和yxc爆肝了2h左右 ...

  6. 【洛谷】P1388 算式(dp)

    题目描述 给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号.例如: N ...

  7. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  8. 洛谷P3360偷天换日(树形DP)

    题目背景 神偷对艺术馆内的名画垂涎欲滴准备大捞一把. 题目描述 艺术馆由若干个展览厅和若干条走廊组成.每一条走廊的尽头不是通向一个展览厅,就 是分为两个走廊.每个展览厅内都有若干幅画,每副画都有一个价 ...

  9. 洛谷2014 选课(树形DP)树形背包问题

    题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...

最新文章

  1. oracle--rowid
  2. C++为什么空格无法输出_C 语言 第8章-字符输入/输出和输入验证
  3. c语言怎么独缺非空格字符,C语言-字符串(单个字符)
  4. SQL Server安装文件挂起错误解决办法【转帖】
  5. python 获取当前是星期几_基金定投选星期几更划算?[python统计分析]
  6. #2009. 「SCOI2015」小凸玩密室
  7. java实验常见错误_java 实验4 异常
  8. HDU 1069 Monkey and Banana 动态规划
  9. squid代理与缓存(上)
  10. word字间距异常处理方式
  11. 十行代码训练sklearn七种分类算法
  12. 代码整合错了,回滚后再整合,为何要诉苦
  13. 最新安卓版本对照表,API对照表,持续更新
  14. 算法设计 L型组件填图问题
  15. 【Python】用matplotlib函数绘制股票趋势图
  16. C# WinForm 功能代码备忘-刘欣
  17. The JAVA_HOME environment variable is not defined correctly 解决方法
  18. sqlplus format 999 A10,以及SQL.PNO的含义
  19. 2021年中国教育行业发展现状及未来发展趋势分析:在校生人数达2.91亿人[图]
  20. Mysql 中 case when then else end 用法

热门文章

  1. 开源科学软件创意大赛_2020年十大数据科学项目创意
  2. 用python证明中心极限定理_中心极限定理及Python实验
  3. 你的下一款绘图软件,何必是visio——Draw.io推荐及使用
  4. 2021-2025年中国耳用绷带行业市场供需与战略研究报告
  5. Home IOS安全–使用class-dump-z导出IOS应用类信息 IOS安全–使用class-dump-z导出IOS应用类信息
  6. Pandas实战教程 | 两列相减
  7. foss测试_2018年FOSS十大法律发展
  8. vue——echarts柱状图横轴文字太多放不下【处理办法】
  9. 【Qt】模型-视图-代理(Model-View-Delegate)
  10. java checkStyle ‘cast‘ is not followed by whitespace.