1.1递推算法

算法理解

从已知条件(通过对问题分析及化简后得出的)出发,逐步推出中间过程,进行若干步可重复性计算,逐步推出中间步骤和结果
分为以下两种:
1.顺推:从已知到问题
2.逆推:从问题到已知

顺推:从边界出发,向问题靠拢
逆推:需要边界特判,会访问到重复的过程,需要加记忆化搜索

T1:

,已经求出来的 dp[i1]dp[i] 的区别,多了一个 a[i]
考虑新的 a[i]dp[i] 的联系 于是就大致分为两种情况,不做细说

T2:

,于是设 f[i][j] 为传到第 i 个人花了 j 次操作的方案数,一个人球可以向两边转移,只需要从两边转移就行了

T3:(T_T)

这里的已知自然是已经求过的划分未知是当前要求的划分,我们考虑这一位如何从上一位转移过来,是多了一位还是n小了,都无法作为突破点,但是我们可以发现当这 f[i][j] 这一维一定存在每一组数字都有1是,则结果就是 f[i][j] ,考虑如何推广,若有的不为1怎么办,可以将每一位都减去1,直到有一位为1,此时的方案数在加上有1的结果就是正确答案

ps:2025.1.7补充:

对于上一位如何推导到这一位,为什么要单独考虑是否有1的情况呢?

我们考虑一共有 j 个抽屉,此时我们已经确定有一个抽屉中只放一个苹果了,那么方案数即为 j-1 个抽屉放 i-1 个苹果的方案数

然后如果没有抽屉只放一个苹果应该怎么办呢?我们先在每个抽屉放上一个苹果,然后就转化为了有 j 个抽屉放 i-j 个苹果的方案数

是不是很好理解。

本质上还是分类讨论+转化

T4:(T_T)

T2T4

T5:

很水的预处理

T6:

很水的贪心

T7:(T_T)

手模后发现其实是一个斐波那契数列,递推它的1个数和长度,然后查询的时候类似于前缀和查询就可

T8:(T_T)

,一个是数的大小,一个是摆放位置,将一个序列转化为二维矩阵,将题中的限制转化为要求以i为边的矩阵内1的个数,求满足条件的组合个数,只需要进行一个分讨,剥出来的L形中的1的个数即可

T9:(TT_TT)

这个题的递推思想非常的明显,就是从上一个斜度转移过来,注意题面要求从外面的点跳进来再跳出去,考验细节

posted @   daydreamer_zcxnb  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示