例.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 红牌

实际上可以将任务看作纵,将小组看作横

每次可以向右边,即不换小组或右下,即换小组

发现实际上是Luogu 数字三角形 的改版,只不过有多个起点

定义状态

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.23DP进阶总结的更多相关文章

  1. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  2. NodeJS学习笔记 进阶 (11)Nodejs 进阶:调试日志打印:debug模块

    个人总结:读完这篇文章需要5分钟,讲解了debug模块的使用 摘选自网络 前言 在node程序开发中时,经常需要打印调试日志.用的比较多的是debug模块,比如express框架中就用到了.下文简单举 ...

  3. duilib进阶教程 -- 总结 (17)

    整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...

  4. 一个js爬虫

    1. 第一个demo 2. configs详解——之成员 3. configs详解——之field 4. configs详解——之site, page和console 5. configs详解——之回 ...

  5. Java+7入门经典 - 6 扩展类与继承 Part 1/2

    第6章 扩展类与继承 面向对象编程的一个重要特性: 允许基于已定义的类创建新的类; 6.1 使用已有的类 派生 derivation, 派生类 derived class, 直接子类 direct s ...

  6. C++ 编程技巧笔记记录(持续更新)

    C++是博大精深的语言,特性复杂得跟北京二环一样,继承乱得跟乱伦似的. 不过它仍然是我最熟悉且必须用在游戏开发上的语言,这篇文章用于挑选出一些个人觉得重要的条款/经验/技巧进行记录总结. 文章最后列出 ...

  7. Android中WebView使用全解

    开始 在Android系统中内嵌的WebKit,这是一个浏览器内核,它帮助着我们可以浏览网页.在实际开发中,如果你想让你的App能够访问网页,那就需要用到WebView这个控件. 如何使用? 其实使用 ...

  8. Spark实战系列目录

    1 Spark rdd -- action函数详解与实战 2 Spark rdd -- transformations函数详解与实战(上) 3 Spark rdd -- transformations ...

  9. 地区sql

    /*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...

  10. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

随机推荐

  1. 近期最值得关注的AI技术报告与Agent综述!

    写在前面 如题,近期优秀的大模型层出不穷.作为技术人,需要阅读高质量的AI技术报告或论文,并且掌握未来应用趋势.本文将推荐一些高质量的AI技术报告,以及Agent智能体综述. 大模型技术报告 Deep ...

  2. 用 DeepSeek 分析,SaaS 多租户的3种隔离模式,结果。。。

    大家好,我是汤师爷~ 在SaaS模式下,多租户之间的资源隔离是基础且关键的一环. SaaS服务商需要在确保运营效率和控制成本的前提下,搭建一个让多个租户能够同时访问的共享环境. 虽然大家都在用同一套S ...

  3. IDEA中创建Spring Boot项目(SSM框架)

    一.IDEA创建新Maven项目 创建maven项目完成 因为创建多模块项目,删除根目录src目录 二.maven多模块项目配置 需要创建的模块 umetric-web  控制层 umetric-we ...

  4. pytest自动化测试 - 我对测试用例超时处理的一点看法

    1 pytest自动化测试 - 我对测试用例超时处理的一点看法 1.1 背景   用例在执行过程中,可能由于网络等待,或者等待一些特殊的文件,而又由于一些异常,导致这些条件一直不能满足,用例卡死,这种 ...

  5. js提示Cannot read property ‘replace‘ of undefined

    JS提示Cannot read property 'replace' of undefined 出现这个错误的原因一般是传的参数为null 在传参之前加个是否为null的判断可以解决异常.

  6. QT5笔记:3.手动撸界面和可视化托界面混合

    3.手动撸界面和可视化托界面混合 参考视频:https://www.bilibili.com/video/BV1AX4y1w7Nt 3.1 工具栏可以通过在UI界面右键选择添加工具栏 3.2 设置窗口 ...

  7. C#之 Dictionary 详解

    基本概念 Dictionary<TKey, TValue>是C#中用于存储键值对集合的泛型类,属于System.Collections.Generic命名空间.它允许使用键(Key)来访问 ...

  8. FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 🚀

    title: FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 date: 2025/3/7 updated: 2025/3/7 author: cmdragon e ...

  9. 通过 C# 打印Word文档

    Word文档是日常办公和学习中不可或缺的一部分.比如在商务往来中,经常需要打印 Word 文档用于撰写和传递正式的商务信函.合作协议.项目提案等.打印出来的文档便于双方签字盖章,具有法律效力和正式性. ...

  10. 【记录】C/C++-关于I/O的坑与教训

    吐槽 每每读取字符串时,倘若稍有灵活的操作,总会遇上诡异奇怪的事情.究其原因,就是没完全理解一些基本读写函数的机制.这次做Uva227就把I/O上的问题全暴露出来了.想来还是应该记录一些经验教训. 记 ...