Tag: 动态规划

【树形DP】树的直径

摘要: 力扣 1245, 1522,树的直径,最经典的树形 DP 题目 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,我们继续研究力扣秋季赛的题目。在十一之前参加了力扣秋季赛个人赛,

【DP难题】力扣1595-连通两组点的最小成本

摘要: 力扣 1595,比较难的图论题,抽象之后是最小边覆盖问题,有状态压缩DP和二分图最大匹配两种解法。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天我们来看一个比较难的图论题,力扣

MDP的动态规划解法-策略迭代和价值迭代

摘要: MDP 假设下的动态规划 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 强化学习环境框架-从一个迷宫环境看MDP的要点 中,我们总结了强化学习的基本概念,以及作为强化学习机制的 MD

价值的定义与计算-贝尔曼方程

摘要: 贝尔曼方程初探 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 强化学习环境框架-从一个迷宫环境看MDP的要点 中,我们总结了强化学习的基本概念,以及作为强化学习机制的 MDP,并且以

状态压缩DP

摘要: 本文介绍状态压缩 DP 的原理和例题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文参考《算法竞赛进阶指南》 0x5,书中关于状态压缩 DP 的讲解我觉得非常好。之前虽然解决过很多状态压

力扣2104-子数组的范围和

摘要: 通过一个问题看分别计算各个元素对答案的贡献的思想 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 面试好题连载 中,我们提到了适合作为面试题的几个标准大致如下: 对于

LCP04-覆盖

摘要: LCP04,状态压缩DP和二分图匹配两种解法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天我们来看一个比较难的图论题,力扣 LCP04。有状态压缩 DP 和二分图最大权匹配两种解法。之

【组合数学】马拦过河卒

摘要: 很经典并且非常综合的组合数学问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文的第一题,标准的马拦过河卒问题是入门的棋盘 DP 的题目。 如果没有马拦着过河卒,那么 leetcode

博弈DP

摘要: 本文介绍博弈 DP 的原理和例题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 博弈是应用数学的一个分支,表示在多决策主体之间行为具有相互作用时,各主体根据所掌握信息以及对自身能力的认知,做

期望DP

摘要: 本文介绍期望 DP 的原理和例题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 与概率DP类似(参考文章概率DP),期望DP不是一种特殊的动态规划类型,而是一种常见的应用场景。类似的还有计数

概率DP

摘要: 本文介绍概率 DP 的原理和例题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 概率DP并不是一种特殊的动态规划类型,而是一种常见的应用场景。类似的还有计数DP,博弈DP,等等。实际上在解决

概率与期望计算

摘要: 概率与期望计算若干例题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文整理自《算法竞赛进阶指南》0x38,首先介绍概率与期望的基本概念和公式,然后有若干例题。 除了第一题是直接求数学期望

矩阵快速幂及其动态规划优化中的应用

摘要: 本文介绍矩阵快速幂的算法原理与代码模板,并解决一个例题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 多米诺与托米诺骨牌平铺 中,我们用矩阵快速幂优化 DP 的方式解决了一个计数问题

【连载】动态规划的优化

摘要: 关于动态规划的优化的文章 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本系列连载是关于动态规划的各种优化方法的。动态规划有很多种优化方式,比较常见的如下图所示 关于动态规划本身,可以参考

【连载】动态规划

摘要: 关于动态规划的各个算法点的文章连载 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 编号 网站链接 备注 搬运 1 动态规划概念和基础线性DP - 算法题刷刷

【DP难题】力扣1411-给Nx3网格图涂色的方案数

摘要: 使用动态规划解决计数问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,最大子数组和这个系列此前连续写了八篇,有些审美疲劳了。今天我们换换脑子,看个使用动态规划解决计数问题的一个例子

【leetbook】动态规划精讲-目录

摘要: 动态规划系列的 4 本 Leetbook 目录,附链接 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 动态规划精讲1 01 概述 02 动态规划简介 动态规划的背景 解决动态规划问

【Puzzle】用户一次游戏带来的收入

摘要: 来自朋友的面试的概率题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 写在前面概率面试题连载已经写了几期了,目前的题目主要是《Fifty challenging problems i

前缀和优化DP

摘要: 本文介绍了动态规划的一种优化方法:前缀和优化 DP。并拆解了力扣第 1871 题。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 前缀和优化 DP当 DP 转移方程是如下形式的时候: 计算

最大子矩阵和

摘要: 最大子矩阵和问题,有两种处理二维情况的方式。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 最大子数组和的三种解法 中,我们详细拆解了最大子数组和这个问题,并且了解到这个问题有三种解

力扣LCP34-二叉树染色

摘要: LCP34,树形DP 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天我们来看一个树形DP的何题,力扣 LCP34,本题是2021力扣杯春季赛团队赛第2题。算法要点如下: 树形DP 二叉

01背包和完全背包题目汇总

摘要: 转换为 01 背包和完全背包的组合问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 组合数学的问题有时候可以转换为背包问题进而解决,而组合数学研究组合的存在性、计数性、优化性。也就是说背包

背包问题拾遗

摘要: 背包问题的遗留问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 01背包和完全背包 和 01背包和完全背包题目汇总 中我们分别了解了 01 背包和完全背包的算法原理、代码模板,以及

局部后效性的处理

摘要: 有后效性:状态之间互相转移,互相影响。无法确定合适的阶段。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $0 有后效性问题的背景阶段是 DP 的三要素之一,无后效性是 DP 算法有效的三个

环形DP

摘要: 环形结构上的动态规划 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $0 环形结构上的 DP对于环形结构上的 DP,比较直接的思路是: 通过枚举法,选择一个位置将环断开,变成线性结构后进行线

二次扫描与换根DP

摘要: 无根树上的树形DP,二次扫描与换根的处理方法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 树形DP 中,我们简要介绍了树形 DP 的思想,以及列举了很多可以解决的问题。 在有的问题

树形背包

摘要: 树形背包 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们以一个模板题看一下背包问题的变种之一:树形背包。树形背包问题是 树形DP 和 分组背包 的应用。 树形背包问题 10. 有依赖

分组背包

摘要: 分组背包 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们以一个模板题看一下背包问题的变种之一:分组背包。分组背包是树形背包的基础,同时也是很多树形 DP 中状态转移的基本模型。 分组

单调队列优化多重背包

摘要: 单调队列优化DP 应用在多重背包问题上 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在 多重背包及其二进制划分优化 中我们了解了多重背包问题,以及使用二进制划分的思想来减少状态个数的做法,

最长公共子序列LCS,最经典的双串线性DP状态设计

摘要: 最长公共子序列,最长公共子串,动态规划解法。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一下只要学动态规划就必然涉及的一题:最长公共子序列。它代表了双串上最经典的一类状态设计思

棋盘DP

摘要: 棋盘 DP 的题目总结 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在很多时候,我们要在矩阵或者三角形上解决问题。比如给定一个矩阵,求最大的子矩阵和;又比如给定一个三角形,求从第一行走

最长上升子序列LIS,最经典的单串线性DP状态设计

摘要: 最长上升子序列,动态规划,二分 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一下只要学动态规划就必然涉及的一题:最长上升子序列。它代表了单串上最经典的一类状态设计思路和阶段划分。

【DP难题】力扣1639-通过给定词典构造目标字符串的方案数

摘要: 一道推公式优化 DP 的问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,本文我们看一个推公式优化 DP 的问题。本题是第 37 双周赛 D 题。关于推公式优化 DP 的更多例子,

动态规划概念和基础线性DP

摘要: 动态规划的基本概念 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们系统学习一下动态规划中一些基本概念。这里我们参考《算法竞赛进阶指南》中关于动态规划的讲解,把动态规划的几个核心概念梳

【多解法】力扣42-接雨水

摘要: 接雨水问题的各种解法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个几年前就被网上研究透了的陈题:接雨水。不过从一题多解的角度,本题还是值得看一下的,几个算法都是非常主流的算法

【DP难题】力扣1617-统计子树中城市之间最大距离

摘要: 力扣 1617,比较难的树形 DP 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天我们来看一个比较难的图论题,力扣 1617,也就是第 210 周赛 D 题。抽象之后是求树的直径

【DP难题】力扣1611-使整数变为0的最少操作次数

摘要: 力扣 1611, 稀疏状态,带位运算的状态转移方程 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文是一个动态规划问题,状态转移方程中有位运算操作,状态取值非常稀疏。处理这种稀疏状

格雷码

摘要: 格雷码的枚举和计算,异或与动态规划 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在通信中,由于信息码元序列是一种随机序列,接收端无法预知码元的取值,也无法识别其中有无错码。所以在发送端需要

方程组DP

摘要: 同一套阶段划分下的两套状态表示以及转移方程 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个比较少见的动态规划问题。场景是两个串,按照两个串比较常见的思路,参考 LCS 问题

单调队列优化DP

摘要: 单调队列优化 DP 的思路以及一些例子 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 使用数据结构优化动态规划的状态转移过程是很常见的思路,例如 平衡树优化DP、哈希表优化DP。单调队列也是

同余类分解状态优化DP

摘要: 同余类分解状态优化DP 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文通过两个力扣的题目看一下通过同余类分解状态的方式优化 DP。此外这两个问题都另外有贪心和自动机的解法。 同余类分解

推公式优化DP

摘要: 一些可以通过推公式优化动态规划算法的问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 通过分析问题列出的动态规划的转移方程,有时经过一些公式推导后可以简化,这也是一种可以优化动态规划算法的

【搜索难题】力扣898-子数组按位或操作

摘要: 等效性剪枝 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文看一个搜索问题,涉及到了记忆化,以及等效性剪枝。 $1 题目 898. 子数组按位或操作 我们有一个非负整数数组 A

哈希表优化DP

摘要: 本文介绍了动态规划的一种优化方法:哈希表优化 DP。并拆解了 leetcode 上的 3 道题目。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 当动态规划的转移方程是类似以下形式的时候:

力扣1074-元素和为目标值的子矩阵数量

摘要: 基于一维问题的解法,解决二维问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $1 题目1074. 元素和为目标值的子矩阵数量 给出矩阵 matrix 和目标值 target,返回元素总和

后缀数组:排名为i的后缀的起始下标

摘要: 后缀数组原理与实现 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 背景一个长度为 n 的字符串 s,共有 n 种后缀。现在想对这 n 个后缀排序,将排序结果保存在一个数组 sa 中。sa[i

在模拟过程中找出循环节

摘要: 循环节优化模拟;倍增优化DP 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在模拟的过程中,如果出现了循环节,就可以直接跳过很多中间的模拟步骤。有时这种循环节是现成已知的,例如文章 通过已知

多重背包及其二进制划分优化

摘要: 多重背包 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings $0 多重背包问题描述有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。 求解

DAG上的DP (拓扑序DP),无权 DAG 的最长路径

摘要: 拓扑序DP解无权DAG上的最长路径问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 对于一个 DAG,我们可以进行拓扑排序,一些动态规划的问题,其阶段的推导过程呈现为一个 DAG,形成了图

【搜索难题】力扣956-最高的广告牌

摘要: 非常综合的搜索题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个综合性很强的搜索问题,会遇到搜索中的多种优化方法,首先比较关键的是找到剪枝方法,本题最终通过适当维护变量进行可行