【一本通基础DP基础模型】摘花生
题面
题目描述
Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。
输入格式
第一行是一个整数T,代表一共有多少组数据。1≤T≤100
接下来是T组数据。
每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C(1≤R,C≤100)
每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M(0≤M≤1000)。
输出格式
对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。
样例
2
2 2
1 1
3 4
2 3
2 3 4
1 6 5
8
16
思路
考虑使用 DP,用集合 dp[i][j] 表示从起点(即 dp[1][1])到点 (i,j) 的所有路线,其中 dp[i][j] 的数值表示这个集合的每条路线中摘到花生数的最大值。那么 dp[r][c] 即为最终答案。下面推导状态转移方程。
- 初始化:所有点的值均为原地图值(边界为0)
具体实现方式:#include<bits/stdc++.h>
using namespace std;
int dp[105][105];//全局变量即可初始化为0
int main()
{
int T;
cin>>T;//读入T组数据
while(T--)
{
int r,c;
scanf("%d%d",&r,&c);//每组数据读入地图长宽
for(register int i(1);i<=r;++i)//register, i(1), ++i 均为卡常优化
for(register int j(1);j<=c;++j)
scanf("%d",&dp[i][j]);//读入地图
...
}
}
- 每次到一个点摘花生的最大值=前面到这个点的最大值+这个点
那么,前面到这个点的最大值怎么求呢?
由于只能朝右或下走,所以前面到这个点只能从左侧或上边来,所以说,只要将左侧dp[i][j-1]与上边dp[i-1][j]取max即可。
具体实现方法:for(register int i(1);i<=r;++i)
for(register int j(1);j<=c;++j)
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+dp[i][j];//按照前面推导的思路进行dp
- 输出
dp[r][c]即可。
具体实现方法:printf("%d\n",dp[r][c]);//读出最后一个点能摘到的最多花生
最后附上完整代码
#include<bits/stdc++.h>
using namespace std;
int dp[105][105];//全局变量即可初始化为0
int main()
{
int T;
cin>>T;//读入T组数据
while(T--)
{
int r,c;
scanf("%d%d",&r,&c);//每组数据读入地图长宽
for(register int i(1);i<=r;++i)//register, i(1), ++i 均为卡常优化
for(register int j(1);j<=c;++j)
scanf("%d",&dp[i][j]);//读入地图
for(register int i(1);i<=r;++i)
for(register int j(1);j<=c;++j)
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+dp[i][j];//按照前面推导的思路进行dp
printf("%d\n",dp[r][c]);//读出最后一个点能摘到的最多花生
}
}
【一本通基础DP基础模型】摘花生的更多相关文章
- 基础dp
队友的建议,让我去学一学kuangbin的基础dp,在这里小小的整理总结一下吧. 首先我感觉自己还远远不够称为一个dp选手,一是这些题目还远不够,二是定义状态的经验不足.不过这些题目让我在一定程度上加 ...
- 【专章】dp基础
知识储备:dp入门. 好了,完成了dp入门,我们可以做一些稍微不是那么裸的题了. ----------------------------------------------------------- ...
- 基础DP(初级版)
本文主要内容为基础DP,内容来源为<算法导论>,总结不易,转载请注明出处. 后续会更新出kuanbin关于基础DP的题目...... 动态规划: 动态规划用于子问题重叠的情况,即不同的子问 ...
- HDU 3537 基础翻硬币模型 Mock Turtles 向NIM转化
翻硬币游戏,任意选3个,最右边的一个必须是正面.不能操作者败. 基本模型..不太可能自己推 还是老实记下来吧..对于单个硬币的SG值为2x或2x+1,当该硬币的位置x,其二进制1的个数为偶数时,sg= ...
- hdu 5586 Sum 基础dp
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Desc ...
- 【学习笔记】dp基础
知识储备:dp入门. 好了,完成了dp入门,我们可以做一些稍微不是那么裸的题了. dp基础,主要是做题,只有练习才能彻底掌握. 洛谷P1417 烹调方案 分析:由于时间的先后会对结果有影响,所以c[i ...
- hdu 4055 Number String (基础dp)
Number String Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)
layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...
- 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP)
layout: post title: 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP) author: "luowentaoaa" catalog: true ...
随机推荐
- dnf常用参数
dnf常用命令 检查并升级可用软件包: $ dnf update 删除缓存: $dnf clean all 列出可用的软件源: $ dnf repolist 搜索软件: $ dnf search $p ...
- victoriaMetrics无法获取抓取target的问题
victoriaMetrics无法获取抓取target的问题 问题描述 最近在新环境中部署了一个服务,其暴露的指标路径为:10299/metrics,配置文件如下(名称字段有修改): apiVersi ...
- Python | 内置函数(BIF)
Python内置函数 | V3.9.1 | 共计155个 还没学完, 还没记录完, 不知道自己能不能坚持记录下去 1.ArithmeticError 2.AssertionError 3.Attrib ...
- 运维:OAAS
IT和互联网运维的新篇章正要掀开,云计算和运维即服务(OaaS)正在为各类企业提供系统构建和扩展,帮助他们取得在线业务的成功. 互联网信息科技和运维一直在不断变化,包括了IT所覆盖的一切新工具.云.基 ...
- 125_Power BI 中 DAX 的性能测试
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近在看DAX"圣经"第二版<The Definitive Guide to DAX ...
- 从头创建一个新的vue项目------用npm|yarn下载vue-cli|vue-ui创建vue
1.下载node或者是nvm node可以直接去node官网下载,http://nodejs.cn/,默认是长期维护的版本 如果想管理node的版本,可以下载nvm.这个是可选的.但是作为一个前端工程 ...
- MySql实例关于ifnull,count,case when,group by(转力扣简单)
给定表 customer ,里面保存了所有客户信息和他们的推荐人. id | name | referee_id|+------+------+-----------+| 1 | Will ...
- Egg上层框架CabloyJS是如何输出SQL语句日志的?
背景 在Egg开发实践中,经常会遇到一个问题:如何查看刚刚执行过的Egg组装的原生SQL语句呢? 1. 现有方案 可以直接在项目的config配置文件中添加MySQL配置debug: true.这会启 ...
- CSP 2021 总结
CSP 2021 总结 PJ 开题顺序:1342 应该先做 T2 ,导致我 T2 直接看错 T1.T3 T1 :直接推规律即可,考场的想法应该正确 T3 :好家伙直接 map 走起 T2 最崩溃的来了 ...
- 测试人生 | 薪资翻倍涨至50W是种什么样的体验?
本文为霍格沃兹测试开发学社优秀学员跳槽笔记,测试开发进阶学习文末加群. 本人已经工作7年了,做的都是功能测试以及写一些简单的自动化脚本,加上之前没有学习的意识,导致专业技术水平与工作年限不匹配,在上家 ...