路径规划型线性dp

题目来源:acwing 275 传纸条 

分析:这题和两人同时摘樱桃之类的题一样,一个人从左上角走到右下角,再从右下角走回左上角,相同地点的分数只能得一次(或者不能走相同地点)。这种题统一可以按照两个人从左上角一起出发,走到右下角,相同格子得分只能算一次来计算。

状态定义:f[k][i1][i2] 代表从(0,0)出发,已经走了k步,两个人横坐标分别为i1,i2时,得分最大值

结果:f[m + n][m + 1][m + 1] 从0走到m一共走m步,从(0,0)走到(m,n) 一共要走m + n步,横坐标范围从0-m共m+1

状态转移:f[k][i1][i2] 从f[k-1]转移过来,(i,j) 从(i-1,j),(i,j - 1)转移过来,当i1 = i2时,j1==j2,同一个点注意只能取一次,这种情况肯定小于两个点不同的情况,如果分数有负数,这里可以考虑加上一个负无穷,所以最终答案肯定是两个人走的路径不同的更优情况。

m,n = map(int,input().split())
g = []
for _ in range(m):g.append(list(map(int,input().split())))f = [[[0]*(m + 1) for _ in range(m + 1)] for _ in range(m + n + 1)]
for k in range(2,m + n + 1):for i1 in range(1,m + 1):for i2 in range(1,m + 1):j1,j2 = k - i1,k - i2if 1 <= j1 <= n and 1 <= j2 <= n:x = g[i1 - 1][j1 - 1] + (g[i2 - 1][j2 - 1] if i1 != i2 else 0)f[k][i1][i2] = max(f[k - 1][i1 - 1][i2 - 1],f[k - 1][i1][i2],f[k - 1][i1 - 1][i2],f[k - 1][i1][i2 - 1]) + x
print(f[-1][-1][-1])

类似题目:https://leetcode.cn/problems/cherry-pickup/

class Solution:def cherryPickup(self, grid: List[List[int]]) -> int:n = len(grid)if grid[0][0] == -1:return 0# 两人一起走f = [[[-inf]*(n +1) for _ in range(n + 1)] for _ in range(n + n + 1)]f[2][1][1] = grid[0][0]for k in range(2,n + n + 1):for i1 in range(1,n + 1):for i2 in range(1,n + 1):if k == 2 and i1 == 1 and i2 == 1:continuej1,j2 = k - i1,k - i2if 1 <= j1 <= n and 1 <= j2 <= n and grid[i1 - 1][j1 - 1] >= 0 and grid[i2 - 1][j2 - 1] >= 0:x = grid[i1 - 1][j1 - 1] + (grid[i2 - 1][j2 - 1] if i1 != i2 else 0)f[k][i1][i2] = max(f[k - 1][i1 - 1][i2 - 1],f[k - 1][i1][i2],f[k - 1][i1 - 1][i2],f[k - 1][i1][i2 - 1]) + xreturn max(f[-1][-1][-1],0)

https://leetcode.cn/problems/cherry-pickup-ii/

class Solution:def cherryPickup(self, grid: List[List[int]]) -> int:m,n = len(grid),len(grid[0])f = [[[-inf]*n for _ in range(n)] for _ in range(m)]f[0][0][-1] = grid[0][0] + grid[0][-1]for i in range(1,m):for j1 in range(n):for j2 in range(n):x = grid[i][j1] + (grid[i][j2] if j1 != j2 else 0)for y1 in (j1 - 1,j1,j1 + 1):for y2 in (j2 - 1,j2,j2 + 1):if 0 <= y1 < n and 0 <= y2 < n:f[i][j1][j2] = max(f[i - 1][y1][y2] + x,f[i][j1][j2])return max(f[-1][j][j1] for j in range(n) for j1 in range(n))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/179273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大金仓数据库:kingbase学习

kingbase学习 1.简介2. 安装3. 基础使用3.1 客户端连接3.2 表数据测试3.2.1 建表创建字段备注 3.2.2 数据写入测试3.2.2 json测试3.2.2.1 json查询测试3.2.2.2 json修改测试3.2.2.3 json数据迁移测试 4.springboot实战4.1 maven依赖4.2 连接配置4.3 mybatis-plus测试4.4 liquib…

QTextEdit 是 Qt 框架中的一个小部件(Widget),用于显示和编辑多行文本内容

QTextEdit 是 Qt 框架中的一个小部件&#xff08;Widget&#xff09;&#xff0c;用于显示和编辑多行文本内容。 QTextEdit 提供了一个可编辑的文本区域&#xff0c;可以用于显示和编辑富文本或纯文本。它支持基本的文本格式设置&#xff08;如字体、颜色、样式等&#xff09;…

【AI认证笔记】NO.2人工智能的发展

目录 一、人工智能的发展里程碑 二、当前人工智能的发展特点 1.人工智能进入高速发展阶段 2.人工智能元年 三、人工智能高速发展的三大引擎 1.算法突破 2.算力飞跃 3.数据井喷 四、AI的机遇 五、AI人才的缺口 六、行业AI 人工智能算法&#xff0c;万物互联&#xff…

从家暴谈中国女性在社会中的艰难处境

1、引言 2023年8月17日&#xff0c;一部名叫《我经过风暴》的电影悄然上映&#xff0c;引发了我的诸多思考。我研究过很多类似的案例&#xff0c;例如2020年的“拉姆案”、2021年的“禹秀英案”、2022年的“西安家暴事件”、2023年的“重庆杀妻案”…等等。这一系列案件&#…

qInstallMessageHandler的学习

背景&#xff1a;需要做一个日志系统。 把信息重定向到txt文件中。 参考&#xff1a; QT 调试信息如何输出到文件&#xff08;qDebug/qWarning/qCritical/qFatal&#xff09;-CSDN博客 Qt 之 qInstallMessageHandler&#xff08;重定向至文件&#xff09;-CSDN博客 demo…

Python小技巧:探索函数调用为何加速代码执行

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python 作为一种解释型语言&#xff0c;其执行速度相对于编译型语言可能会较慢。然而&#xff0c;在Python中&#xff0c;通常观察到代码在函数中运行得更快的现象。这个现象主要是由于函数调用的内部优化和解释…

神器!使用 patchworklib 库进行多图排版真棒啊

如果想把多个图合并放在一个图里&#xff0c;如图&#xff0c;该如何实现 好在R语言 和 Python 都有对应的解决方案&#xff0c; 分别是patchwork包和patchworklib库。 推介1 我们打造了《100个超强算法模型》&#xff0c;特点&#xff1a;从0到1轻松学习&#xff0c;原理、…

整车测试中的UDS诊断

UDS&#xff08;Unified Diagnostic Services&#xff0c;统一的诊断服务&#xff09;诊断协议是在汽车电子ECU环境下的一种诊断通信协议。这种通信协议被用在几乎所有由OEM一级供应商所制造的新ECU上面。这些ECU控制车辆的各种功能&#xff0c;包括电控燃油喷射系统&#xff0…

Week-T11-优化器对比试验

文章目录 一、准备环境二、准备数据三、搭建训练网络三、训练模型&#xff08;1&#xff09;VSCode训练情况&#xff1a;&#xff08;2&#xff09;jupyter notebook训练情况&#xff1a; 四、模型评估 & 模型预测1、绘制Accuracy-Loss图2、显示model2的预测效果 五、总结1…

域名与服务器负载均衡技术学习总结

域名与服务器负载均衡技术学习总结_域名负载均衡-CSDN博客 OSI七层网络模型和TCP/IP四层网络模型的异同_七层模型和四层模型的区别-CSDN博客

C++类与对象(7)—友元、内部类、匿名对象、拷贝对象时编译器优化

目录 一、友元 1、定义 2、友元函数 3、友元类 二、内部类 1、定义 2、特性&#xff1a; 三、匿名对象 四、拷贝对象时的一些编译器优化 1、传值&传引用返回优化对比 2、匿名对象作为函数返回对象 3、接收返回值方式对比 总结&#xff1a; 一、友元 1、定义…

RPC之grpc重试策略

1、grpc重试策略 RPC 调用失败可以分为三种情况&#xff1a; 1、RPC 请求还没有离开客户端&#xff1b; 2、RPC 请求到达服务器&#xff0c;但是服务器的应用逻辑还没有处理该请求&#xff1b; 3、服务器应用逻辑开始处理请求&#xff0c;并且处理失败&#xff1b; 最后一种…

2020年3月2日 Go生态洞察:Go协议缓冲区的新API发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

如何轻松将 4K 转换为 1080p 高清视频

由于某些原因&#xff0c;你可能有一些 4K 视频&#xff0c;与1080p、1080i、720p、720i等高清视频相比&#xff0c;4K 视频具有更高的分辨率&#xff0c;可以给您带来更多的视觉和听觉享受。但是&#xff0c;播放4k 视频是不太容易的&#xff0c;因为超高清电视没有高清电视那…

ubuntu重启后下无wifi,蓝牙和飞行模式切换问题

问题&#xff1a; 打开ubuntu后发现wifi没了&#xff0c;图标也找不到&#xff0c;蓝牙打不开&#xff0c;而打开飞行模式后就可以打开蓝牙了&#xff0c;关闭蓝牙就自动打开了飞行模式&#xff0c;这都是什么奇奇怪怪的问题。然后就是重装wifi驱动&#xff0c;无效。之前我也…

线性表之栈

文章目录 主要内容一.栈1.栈的初始化、判空、进栈、出栈和栈顶元素操作代码如下&#xff08;示例&#xff09;: 2.共享栈3.栈的链式存储结构 总结 主要内容 栈 一.栈 栈是一种数据结构&#xff0c;它是一种只能在一端进行插入或删除操作的线性表。栈的特点是后进先出&#xf…

C#面向对象

过程类似函数只能执行没有返回值 函数不仅能执行&#xff0c;还可以返回结果 1、面向过程 a 把完成某一需求的所有步骤 从头到尾 逐步实现 b 根据开发需求&#xff0c;将某些 功能独立 的代码 封装 成一个又一个 函数 c 最后完成的代码就是顺序的调用不同的函数 特点 1、…

torch::和at:: factory function的差別

torch::和at:: factory function的差別 前言torch::autograd::THPVariable_randtorch::rand_symintat::rand_symintdemotorch命名空間at命名空間 前言 >>> import torch >>> a torch.rand(3, 4) >>> a.requires_grad False >>> a torch…

【问题系列】消费者与MQ连接断开问题解决方案(二)

1. 问题描述 当使用RabbitMQ作为中间件&#xff0c;而消费者为服务时&#xff0c;可能会出现以下情况&#xff1a;在长时间没有消息传递后&#xff0c;消费者与RabbitMQ之间出现连接断开&#xff0c;导致无法处理新消息。解决这一问题的方法是重启Python消费者服务&#xff0c;…

C# 模拟鼠标操作工具类

写在前面 用WinForm做RPA项目时经常需要模拟鼠标操作&#xff0c;通过调用Windows Api 可以实现控制鼠标的移动、点击以及滚轮滚动&#xff0c;做到跟人工一样的操作。 代码实现 public static class MouseKeyController{[DllImport("user32")]private static exte…