《方格取数》为什么要四维度数组

YOLOv11改进策略【损失函数篇】| 将激活函数替换为带有注意力机制的激活函数 ARelu 将ELSA中的函数Φ\PhiΦ用具有可学习参数α\alphaα和β\betaβ的网络层表示为LxiαβCαxixi0σβxixi≥0Lxi​αβCαxi​σβxi​​xi​0xi​≥0​,结合标准的Rectified Linear UnitsRxi0xi0xixi≥0Rxi​0xi​​xi​0xi​≥0​,得到可学习激活函数Fxiα。 阅读详情

坐标洛谷的一条题目:

当时第一个思路就是:先让一个人走,取完最大和路径上的数,再让第二个人取完剩下地图中的最大和路径上的数。

可是题解并不是这么做的,而是用了四维数组dp[i][j][k][l]分别表示两个人分别走到(i,j)和(k,l)点时两人路径之和的最大值。

 代码如下:

 

#include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int f[12][12][12][12],a[12][12],n,x,y,z;
    int main() {
        cin>>n>>x>>y>>z;
        while(x!=0||y!=0||z!=0){
            a[x][y]=z;
            cin>>x>>y>>z;
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                for(int k=1;k<=n;k++){
                    for(int l=1;l<=n;l++){
                        f[i][j][k][l]=max(max(f[i-1][j][k-1][l],f[i-1][j][k][l-1]),max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]))+a[i][j]+a[k][l];
                        if(i==k&&l==j)f[i][j][k][l]-=a[i][j];
                    }
                }
            }
        }
        cout<<f[n][n][n][n];
        return 0;
}

凭脑子空想,可能很难理解为啥前者方法是错的。

(万次尝试后········)

·

·

·

我终于找到了一个结果不一样的输入例子:

 

 用错误的方法得到的AB两个人的取值情况如下:(我分别用蓝色和红色 标志出他们的路径)

而用四维dp运行后两人的路径为:

 这样总和就比上一个方法多了5。

而前者方法错误的原因总结一句话就是:违背了动态规划的无后效性原则。

因为第一个人走了后,第二个人的路径就可能会受到第一个人的走法的限制。比如在这个例子里面,第一个人走到了8的位置,如果向右走,剩下的两个5第二个人就无法兼得;而若第一个人向下走,自己的路径和没变,但是第二个人却可以同时取到剩下的两个5。

所以刷题的时候千万不能想当然。

CMake入门教程【基础篇】在Windows、Linux上安装CMake CMake如何下载与安装 阅读详情

相关推荐

DVWA靶场实战:从搭建到渗透测试的完整指南

本文详细介绍了DVWA靶场的搭建与渗透测试全流程,涵盖LAMP环境搭建、Docker部署及集成环境安装三种方式。通过SQL注入、文件上传漏洞等实战案例,帮助读者掌握Web安全测试技巧,并提供防御方案与进阶调优建议,是网络安全学习的实用指南。

weixin_28312391的博客 488

方格取数(number)

int n,m;i<=n;i++){j<=m;j++){i<=n;i++){j<m;j++){i<=n;i++){i>=1;i--){i<=n;i++){if(m>1){i<=n;i++){return 0;

nmnmnmnmnmgh的博客 316

Bootloader Design of PIC18 series MCU

注意:下列描述是在PIC单片机上启用Bootloader的一个相关知识的近似完备集。所有需要了解的,与bootloader与用户态程序交互的理论知识都已给出。包含内存组织,跳转,中断等必备功能的描述。

含光左卫的工作笔记集 1267

方格取数

洛谷 P1004 方格取数 题目描述 设有N ×N的方格图(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 ...

Mintind的博客 643

RocketMq面板访问异常 com.alibaba.fastjson.JSONException: not close json text, token : string

rocketmq JSONException: not close json text, token : string 问题解决

qq_21067307的博客 5573

手把手教你用Node.js模拟大麦APP下单请求(含滑块验证处理)

本文详细解析了如何使用Node.js模拟大麦APP下单请求的全流程,包括接口逆向、滑块验证处理和签名算法逆向等关键技术。通过实战案例和代码示例,帮助开发者掌握移动端API调用的核心要素,如动态参数构造、安全验证突破等,提升自动化下单的成功率和效率。

weixin_42569329的博客 353

方格取数问题 线性规划网络流

方格取数问题 有一网格,每个格子有一定价值的物品,拿了某个格子的物品,则不能拿去其上下左右的物品 怎样使得价值最大 将问题抽象为黑白格 取黑则不能取上下左右的格子(白色) 白色则相反 构建网络 源点 黑色方格 白色方格 汇点 源点–>黑色方格 容量:黑色方格价值 白色方格–>汇点 容量:白色方格价值 黑色方格–>白色方格 :两方格相邻,且容量为正无穷 切割线 :切中的边容量为没有选中的方格权值 则使其最小,达到了选中方格总权值最大 #include<iostream> #inc

高万禄的博客 799

K230开发板实战:YOLOv8n模型部署全流程(附常见报错解决方案)

本文详细介绍了在K230开发板上部署YOLOv8n模型的完整流程,包括模型选型、配置文件优化和运行时调优。特别针对常见的'生成部署文件异常'等问题提供了实用解决方案,帮助开发者高效完成嵌入式AI模型的部署与优化。

g8f9d0s1a2的博客 1048

P1004 方格取数(洛谷)DP-动态规划问题-python实现

题目 输入输出 讲解 这题,是四维动规的模板题,我们考虑两个人同时走,就相当于数字三角形。状态转移方程为: f[i][j][k][l]=max(f[i-1][j][k-1][l],f[i-1][j][k][l-1],f[i][j-1][k-1][l],f[i][j-1][k][l-1])+a[i][j]+a[k][l];f[i][j][k][l]=max(f[i−1][j][k−1][l],f[i−1][j][k][l−1],f[i][j−1][k−1][l],f[i][j−1][k][l−1])+a[

weixin_44621957的博客 746

OsgEarth开发笔记(三):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(下)

上一篇编译了proj6.2.0、gdal3.2.1,本篇继续。 OsgEarth的编译,是基于Osg和OsgEarth结合在一起的,先要编译Osg,然后编译OsgEarth。OsgEarth的依赖库较多,分为上、中、下三篇,然后单独有一篇如何将编译好的osgEarth集成到Qt中。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 4万+

Calibre:LVS 快速debug short/open技巧

用Fix Suggestion和Short Isolate两种方法debug LVS问题

m0_61544122的博客 7459

使用二阶动态规划解决方格取数

采用2维动态规划方法解决方格取数

euler1983的专栏 772

RK3588 部署 YOLOv5s 实战:多线程加速从 16FPS 飙升到 120FPS(含性能优化)

因为RK3588包含了3个NPU核心,支持3个核心同时工作、双核合作、以及单核工作。我们可以使用线程池来加速。线程池是一种长街的并发编程模型,它用于管理和复用线程,以提高多线程程序的性能和效率。线程池通常包含以下主要组件:1、任务队列:任务队列用于存储待执行的任务。这些任务可以是函数、方法或其他需要多线程环境中执行的操作。2、线程池管理:线程池管理器负责创建、销毁和管理线程。它会监视任务队列中的任务,根据需要创建线程,执行任务,并在任务完成后将线程放回池中以供重用。

FJN110的博客 99

[2020 CCF CSP-J2]方格取数(number)

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

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4730

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

算法训练 方格取数

算法训练 方格取数-题解

Samuel777999111的博客 945

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【NOIP2000】方格取数

【NOIP2000】方格取数 时间限制: 1 Sec  内存限制: 64 MB 题目描述 设有N*N的方格图,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):  某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。 在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 此人从A点到B 点

Ø 1794

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[NOIP2000 提高组] 方格取数 题解

我们可以设 i 为我们现在总共走的步数,设 j 为第一条路径目前的横坐标,再设 k 为第二条路径目前的横坐标。状态转移方程十分好推,这里就不给出了,如果真的不知道状态转移方程是什么,就去看我的代码,我的代码中间有个三重循环,这个三重循环里面就是状态转移方程的实现部分。某人从图的左上角的 A 点出发,可以向下行走,也可以向右走,直到到达右下角的 B 点。输入的第一行为一个整数 N(表示 N×N 的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的 0 表示输入结束。

rooney2024的博客 470

AcWing 1027 方格取数

题目描述: 设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示: 某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。 在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 此人从 A 点到 B 点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。 输入格式 第一行为一个整数N,表...

昂昂累世士的博客 475

蓝桥杯 算法训练 方格取数Python实现(动态规划)

资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   设有N * N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。   某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点(N,N)。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。就是说路径不能重复   此人从A点到B 点共走两...

bianxia123456的博客 1579

2022-2-14 AcWing1027 方格取数

1027. 方格取数 某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。 在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 此人从 A 点到 B 点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。 相比与普通的走格子,寻找最大路径,不同点在于:走两条路径。因此DP的维数增加,用4维表示当前的一个状态。 又因为两个路径走过的步数是一样的,所以可以运用等价关系降维:k=i1+j1=i2+j2 起点:2个点 终点:2个点 会出现两条路径重复的情况,对

kkzzjx 203

【动态规划-数字三角形模型】:摘花生、最低通行费、方格取数【已更新完成】

动态规划中的数字三角形模型

2301_76941161的博客 2229

numpy中数组维度的理解

这篇文章主要是为了弄清楚数组按每个维度进行计算时,具体的操作是什么样的。 一、数组中的各个维度表示的是什么? 为了便于理解,用最小单位体表示,剥去最外面一层中括号后,数据的形状。 1. 以二维数组为例 import numpy as np np.random.seed(0) arr2 = np.random.randint(0,9,size=(4,3)) print(arr2) [[5 0 3]...

Blankit1的博客 1万+

CSP-J 2020 方格取数 [2种超详细解法]

CSP-J 2020 方格取数 记忆化搜索和动态规划2种超详细解法~

ThOugHT_XD的博客 1666

P7074 [CSP-J2020] 方格取数 - 动态规划解法

本文介绍了P7074方格取数问题的动态规划解法。该题要求在网格中从左上到右下寻找最大路径和,移动方向限于右、上、下且不能重复访问格子。核心算法采用按列处理方式,通过双向状态传递(向下和向上)优化计算。实现时使用滚动数组将空间复杂度降至O(n),并处理了单列等特殊情况。算法时间复杂度为O(n×m),能正确处理全负值、单行等极端情况。代码通过双向独立传递确保路径完整性,已通过大规模数据测试验证。

Sanhai的博客 511

从方格取数到线性DP:掌握动态规划的核心思想与实战技巧

动态规划(DP)是解决最优化问题的核心算法思想,其本质是通过定义状态和状态转移方程,将复杂问题分解为重叠子问题,并利用记忆化避免重复计算。线性DP作为DP的重要分支,强调状态之间存在线性的依赖关系,可以按照特定顺序(如从左到右、从上到下)递推求解。这种思想在算法竞赛和工程实践中价值巨大,能够高效解决诸如最长公共子序列、编辑距离、背包问题等经典模型。本文以经典的“方格取数”问题为切入点,深入剖析了线性DP的状态定义、转移方程、边界处理以及空间优化等关键环节,并探讨了其与滚动数组、路径回溯等实用技术的结合。通过

weixin_30388677的博客 341

python数组维度怎么看_numpy数组维度理解终结版

写在前面可能你会不相信,我是从玩pytorch中过来的,我觉得有必要记录一下,transpose这个坑还非踩不可,为了说的清楚一点儿,我多铺垫一点儿,先说说numpy数组维度的理解引子>>> a = np.arange(start=0, stop=24)array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1...

weixin_39620099的博客 7875
上一篇: 寻找两个正序数组的中位数O(log[min(m,n)])时间复杂度的解题记录
下一篇: sort函数居然能改变元素值?记一次有趣的Bug——四数之和
咖啡咖_CoffCa
博客等级 码龄6年 116粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖啡咖_CoffCa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值