【NOIP2020普及组复赛】题3:方格取数

题3:方格取数

【题目描述】

设有 n×m 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。

【输入文件】

第一行有两个整数 n,m。

接下来 n 行每行 m 个整数,依次代表每个方格中的整数。

【输出文件】

一个整数,表示小熊能取到的整数之和的最大值。

【输入样例1】

3 4
1 -1 3 2
2 -1 4 -1
-2 2 -3 -1

【输出样例1】

9

【样例1说明】

在这里插入图片描述
按上述走法,取到的数之和为1+2+(-1)+4+3+2+(-1)+(-1)=9,可以证明为最大值。

在这里插入图片描述
注意,上述走法是错误的,因为第2行第2列的方格走过了两次,而根据题意,不能重复经过已经走过的方格。

在这里插入图片描述
另外,上述走法也是错误的,因为没有右下角的终点。

【输入样例2】

2 5
-1 -1 -3 -2 -7
-2 -1 -4 -1 -2

【输出样例2】

-10

【样例2说明】

在这里插入图片描述
按上述走法,取到的数之和为(-1)+(-1)+(-3)+(-2)+(-1)+(-2)=-10,可以证明为最大值。因此,请注意,取到的数之和的最大值也可能是负数。

【数据规模】

对于 20 % 20\% 20% 的数据, n , m ≤ 5 n,m≤5 n,m5

对于 40 % 40\% 40% 的数据, n , m ≤ 50 n,m≤50 n,m50

对于 70 % 70\% 70% 的数据, n , m ≤ 300 n,m≤300 n,m300

对于 100 % 100\% 100% 的数据, 1 ≤ n , m ≤ 1 0 3 1≤n,m≤10^3 1n,m103 。方格中整数的绝对值不超过 1 0 4 10^4 104

【代码如下】:

#include <stdio.h>
typedef long long LL;
const LL min_ll = -1e18;
int n, m; LL w[1005][1005], f[1005][1005][2];
inline LL mx(LL p, LL q, LL r) {return p > q ? (p > r ? p : r) : (q > r ? q : r);}
inline LL dfs(int x, int y, int from) {if (x < 1 || x > n || y < 1 || y > m) return min_ll;if (f[x][y][from] != min_ll) return f[x][y][from];if (from == 0) f[x][y][from] = mx(dfs(x + 1, y, 0), dfs(x, y - 1, 0), dfs(x, y - 1, 1)) + w[x][y];else f[x][y][from] = mx(dfs(x - 1, y, 1), dfs(x, y - 1, 0), dfs(x, y - 1, 1)) + w[x][y];return f[x][y][from];
}
int main(void) {
//	freopen("number.in", "r", stdin); freopen("number.out", "w", stdout);scanf("%d %d", &n, &m);for (int i = 1; i <= n; ++i)for (int j = 1; j <= m; ++j) {scanf("%lld", &w[i][j]);f[i][j][0] = f[i][j][1] = min_ll;}f[1][1][0] = f[1][1][1] = w[1][1];printf("%lld\n", dfs(n, m, 1));return 0;
}

http://www.ppmy.cn/server/48112.html

相关文章

【简单讲解下TalkingData】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

C++设计模式-外观模式,游戏引擎管理多个子系统,反汇编

运行在VS2022&#xff0c;x86&#xff0c;Debug下。 30. 外观模式 为子系统定义一组统一的接口&#xff0c;这个高级接口会让子系统更容易被使用。应用&#xff1a;如在游戏开发中&#xff0c;游戏引擎包含多个子系统&#xff0c;如物理、渲染、粒子、UI、音频等。可以使用外观…

js平滑滚动元素使其可见

直接上重点&#xff1a; let xpath "//*/div[idxxx]"; document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.scrollIntoView({ behavior: "smooth"})这段代码是JavaScript中使用XPath查询文档并执行平…

HTML动态响应2-Servlet+Ajax实现HTTP前后台交互方式

作者:私语茶馆 前言 其他涉及到的参考章节: HTML动态响应1—Ajax动态处理服务端响应-CSDN博客 Web应用JSON解析—FastJson1.2.83/Tomcat/IDEA解析案例-CSDN博客 HTML拆分与共享方式——多HTML组合技术-CSDN博客 1.场景: WEb项目经常需要前后端交互数据,并动态修改HTML页…

【Pytorch】深入Pytorch模型的训练、log、可视化

文章目录 模型训练的模板综合案例-Pytorch 官网demo优化记录日志解析日志增加tensorboard数据记录保存训练曲线模型参数可视化增加wandb数据记录模型训练的模板 综合案例-Pytorch 官网demo pytorch 官网tutorial-quickstart https://blog.csdn.net/weixin_39107270/article/de…

【二进制部署k8s-1.29.4】八、worker端安装kubelet和cotainerd

文章目录 简介 一.安装containerd1.1.安装containerd1.2.生成containerd配置文件并启动 二.安装kubelet并配置启动文件2.1.准备kubelet配置文件及证书2.2.安装kubelet2.3.配置启动脚步 三.将node节点加入集群注意事项 简介 本章节主要讲解安装containerd和kubelet,containerd主…

线程进阶-2 ThreadLocal

一.简单说一下ThreadLocal 1.ThreadLocal是一个线程变量&#xff0c;用于在并发条件下&#xff0c;为不同线程提供相互隔离的变量存储空间。在多线程并发的场景下&#xff0c;每个线程往ThreadLocal中存的变量都是相互独立的。 2.基本方法 &#xff08;1&#xff09;set(Obj…

6.更复杂的光照

一、Unity的渲染路径 渲染路径决定了光照是如何应用到Unity Shader中的。我们需要为每个Pass指定它使用的渲染路径 如何设置渲染路径&#xff1f; Edit>Project Settings>Player>Other Settinigs>Rendering 如何使用多个渲染路径&#xff1f;如&#xff1a;摄像…

C# list集合

一、list集合基本使用 1.添加元素 ① 单个元素添加 List<int> list new List<int>();for (int i 0; i < 3; i){list.Add(i);}//输出&#xff1a;0,1,2 ②初始化时添加元素 List<int> list2 new List<int> { 1, 2, 3 };//输出&#xff1a;0,1…

使用JavaScript实现网页通知功能

如何使用js来实现网页通知功能。即使在用户浏览其他页面时&#xff0c;也能向他们推送通知信息。 废话不多说直接上代码 function showAutoNotification() {if ("Notification" in window) {Notification.requestPermission().then(function(permission) {if (permis…

ES6面试题

1.let const var比较 let 和 const 定义的变量不会出现变量提升,而 var 定义的变量会提升。let 和 const 是JS中的块级作用域let 和 const 不允许重复声明(会抛出错误)let 和 const 定义的变量在定义语句之前,如果使用会抛出错误(形成了暂时性死区),而 var 不会。const 声明…

功能问题:如何防止接口重复请求?

大家好&#xff0c;我是大澈&#xff01; 本文约 1400 字&#xff0c;整篇阅读约需 3 分钟。 防止接口重复请求在软件开发中非常重要&#xff0c;重复请求必然会导致服务器资源的浪费。 因为每次请求都需要服务器进行处理&#xff0c;如果请求是重复的&#xff0c;那么服务…

【数据库系统概论】数据库设计过程

数据库设计过程通常分为以下几个阶段&#xff0c;每个阶段都有其特定的任务和目标&#xff1a; 1. 需求分析阶段 任务&#xff1a;与用户沟通&#xff0c;了解和确定系统的功能需求和数据需求。 目标&#xff1a;明确系统需要处理的数据类型、数据量、用户访问模式以及功能需…

STL容器--list

1. list的介绍及使用 1.1 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指其前…

【Modelground】个人AI产品MVP迭代平台(3)——工程化架构设计

文章目录 背景monorepo多项目调试/打包公共静态资源服务公共模型拷贝入项目的public文件夹总结 背景 Modelground中的项目&#xff0c;基本都依赖Mediapipe模型&#xff0c;因此&#xff0c;有很强的需要对Mediapipe进行封装&#xff0c;其余项目都调用这个封装库。从架构上&a…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.5,6 SPI驱动实验-ICM20608 ADC采样值

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

《STM32Cube高效开发教程基础篇》- 单片机知识准备

文章目录 正点原子视频P1 单片机介绍P2 Cortex-M系列介绍P3 初识STM32P4 学会查看数据手册P5 最小系统和IO分配晶振电源复位BOOT启动电路下载调试 正点原子视频 视频链接 P1 单片机介绍 P2 Cortex-M系列介绍 P3 初识STM32 P4 学会查看数据手册 P5 最小系统和IO分配 晶振 电源…

Tuxera Ntfs For Mac 2023的具体使用方法

大家都知道由于操作系统的原因&#xff0c;在苹果电脑上不能够读写NTFS磁盘&#xff0c;但是&#xff0c;今天小编带来的这款tuxera ntfs 2024 mac 破解版&#xff0c;完美的解决了这个问题。这是一款在macOS平台上使用的磁盘读写软件&#xff0c;能够实现苹果Mac OS X系统读写…

信息学奥赛初赛天天练-21-完善程序-动态规划、编辑距离与字符数组应用的极致探索

PDF文档公众号回复关键字:20240606 1 2023 CSP-J 完善程序2 完善程序&#xff08;单选题&#xff0c;每小题 3 分&#xff0c;共计 30 分&#xff09; 给定两个字符串&#xff0c;每次操作可以选择删除&#xff08;Delete&#xff09;、插入&#xff08;Insert&#xff09;…

WPS超级会员4年,2024年到手值得!

WPS超级会员4年&#xff0c;带来金山办公软件的全新体验&#xff01;作为正版软件&#xff0c;WPS不仅拥有海量的模板资源&#xff0c;还能轻松实现PDF转word、图片处理、PDF编辑文档修复等功能&#xff0c;让你的办公效率更上一层楼。 购买WPS超级会员4年&#xff0c;你将获得…