首页 > 其他分享 >11.23DP进阶总结

11.23DP进阶总结

时间:2024-11-24 11:35:33浏览次数:7  
标签:进阶 右下角 11.23 正方形 枚举 DP dp 边界

例.1 Luogu-P1387最大正方形

按如下复杂度来分析

  • O(\(n^6\))
  • O(\(n^5\))
  • O(\(n^3\))
  • O(\(n^2\log n\))
  • O(n^2)

O(\(n^6\))

最朴素的暴力做法
即使用两重循环枚举左上角端点,再使用两重循环枚举右下角端点,在用两重循环遍历区间内的每一个点,统计个数
有一道题是Luogu-B3724,刚好就是使用六重循环解决,主要代码如下

O(n^5)

由于需要寻找的部分是一个正方形,所以可以不用枚举右下角端点,改用枚举边长,计算右下角位置
即右下角位置横坐标是左上角横坐标+边长-1,纵坐标一样计算
注意:由于右下角可能超出正方形边界,所以当超边界时要直接break,因为再往后会越超越大

O(n^3)

发现一个一个统计太耗费时间了,所以使用二维前缀和优化,注意边界

O(\(n^2\log n\))

在N^5是发现了一个长度的单调性:
如果长度短的不行,那么长的肯定不行
如果长的可以,那么一定还有更短的
所以二分长度

O(\(n^2\))

考虑DP
①定义状态:dp[i][j]:表示以(i,j)作为右下角的最长正方形边长
②答案:max(dp[i][j])
③状态转移方程
首先,(i,j)作为右下角,自己就要是1
对于每个(i,j),从(i-1,j-1)直接扩散到(i,j)是不行的,因为还需要(i,j)上面的1数量与(i-i,j-1)相同,左边同理
左边与上面连续1的个数实际上就是上一个格子与左边一个格子的DP值
但是要找三个DP值共有的部分,所以取最小值
得出:
\(dp[i][j]=\min(\min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1)+1\)
④边界
dp[i]][j]=a[i][j]

P5732 【深基5.习7】杨辉三角

还是DP分析
①状态
dp[i][j]:杨辉三角第i行第j列的数
②答案
dp[i][j]
③方程
每个DP值就是他上面的与它左上方的DP和
dp[i][j]=dp[i-1][j-1]+dp[i-1][j]
④边界
每行第一个和最后一个是1
dp[i][1]=dp[i][i]=1;

练1 P1130 红牌

定义状态
dp[i][j]:让第i个小组去做第j个步骤,前j个步骤所需的时间最小值
答案
max{dp[i][n]}
方程
对于每一个步骤,可以让上一个小组做上一步或这个小组做上一步
即dp[i][j]=min(dp[i-1][j-1],dp[i][j-1])+a[i][j]
a[i][j]表示第i个小组做第j个步骤所需的时间
边界
每个小组做第一步的时间
dp[i][1]=a[i][1]

标签:进阶,右下角,11.23,正方形,枚举,DP,dp,边界
From: https://www.cnblogs.com/OIer-QAQ/p/18565129/study_DP_too

相关文章

  • C进阶 函数的递归
    文章目录一,函数递归的介绍二,考虑仅变量的递归三,考虑指针与地址的递归四,迭代与递归的选择与二者之间的利与弊五,经典题目:汉诺塔问题(感兴趣可以去看看视频学习一下,这个文章不太好描述)前言此类算法可以简化代码的书写量,进而可以更加简洁的书写自己的代码一.函数递归的介......
  • 机器学习实战笔记34-38:gridsearchcv的进阶使用,无监督学习:kmeans、DBSCAN
    主要讲了gridsearchcv的几种变形使用方式一:全部参数搜索方法是构造机器学习流之后,构造参数空间二:优化评估指标的选择作为网格搜索中输出评估指标的参数,roc_auc参数只能指代metrics_roc_auc_score函数的二分类功能,如果需要多分类,则需要将scoring修改为roc_auc_ovr等参数三......
  • PyODPS节点实现避免将数据下载到本地
    本文为您介绍PyODPS如何避免将数据下载到本地。背景信息PyODPS提供了多种方便下载数据到本地的方法。因此,在设备允许的情况下,可以把数据下载到本地处理,然后再上传至MaxCompute。但是这种操作非常低效,数据下载到本地进行处理,无法使用MaxCompute的大规模并行能力。当数据量大于......
  • PyODPS节点实现结巴中文分词
    本文为您介绍如何使用DataWorks的PyODPS类型节点,结合开源结巴中文分词库,对数据表中的中文字段进行分词处理并写入新的数据表,以及如何通过闭包函数使用自定义词典进行分词。前提条件已创建DataWorks工作空间并绑定了MaxCompute计算引擎创建工作空间。背景信息DataWorks为您......
  • ybtoj 高效进阶题解索引
    密码:sunxuhetai2009--------------------云落的分割线--------------------基础算法第1章-递推算法第2章-贪心算法第3章-二分算法第4章-深搜算法第5章-广搜算法已完结--------------------云落的分割线--------------------图论第1章-并查集第4章-强连......
  • 【Python图像处理】进阶实战续篇(五)
    在前几篇文章中,我们已经探讨了Python在图像处理领域的多种技术,包括图像分割、视频处理、三维重建、图像增强、面部识别、文字识别、图像检索以及医学图像处理。本篇将继续深入探讨更多图像处理技术及其应用实例,并结合更多的知识点说明,以帮助读者更全面地掌握图像处理领域的......
  • TCP vs UDP:如何选择适合的网络传输协议?
    在网络通信中,TCP(TransmissionControlProtocol)和UDP(UserDatagramProtocol)是两种非常重要的传输层协议。它们各有特点,适用于不同类型的应用场景。本文将详细探讨TCP和UDP协议的结构、优缺点及应用,帮助您理解如何在不同情况下选择适合的协议。一、什么是TCP和UDP?TCP(传输控......
  • 36. UDP网络编程
    一、什么是UDP协议  相对于TCP协议,UDP协议则是面向无连接的协议。使用UDP协议时,不需要建立连接,只需要知道对象的IP地址和端口号,就可以直接发数据包。但是,数据无法保证一定到达。虽然用UDP传输数据不可靠,但它的优点是比TCP协议的速度快。对于不要求可靠到达的数据而......
  • Linux 网络编程之UDP套接字
    前言前面我们对网络的发展,网络的协议、网路传输的流程做了介绍,最后,我们还介绍了IP和端口号,ip +port叫做 套接字socket,本期我们就来介绍UDP套接字编程!目录1、预备知识1.1传输层协议:TCP/UDP1.2网络字节序1.3socket接口1.4sockaddr2、echo_server2.1核......
  • 一系列DP题目
    「BJOI2014」路径由于数据范围很小,图对于我们来说就没有什么问题了。将步数、括号到了第几层,上一个字符是什么记入状态。转移要注意很多细节,判掉不合法的。这里注意,由于0是否作为第一个是我们所关心的,那么在设计\(mp\)的时候,要多记一个种类\(~0\),表示不是前导\(0\)的\(......