CSGrandeur's Thinking

Cogito Ergo Sum

动态规划入门

  • 动态(Dynamic):问题的解因时间或决策而变化
  • 规划(Programming):分解子问题,利用子问题之间关系求解
阅读全文 »

倍增与稀疏表(ST表)

倍增思想的核心在于通过预处理每个状态的跳跃步长(如2的幂次),将线性时间的操作优化为对数时间。其关键在于构建一个跳跃表,每个位置存储跳跃不同\(2^k\)步后的结果。对于多次跳跃问题,将总步数分解为若干2的幂次之和,逐次跳跃即可高效求解。

阅读全文 »

分块

字面意思,把数据分成一块一块去处理。

比如数据存在一段一段连续的相同值时,把相同的值看作一个的"块",从而快速跳过。

比如把要经常批量处理的数据分成一个一个的块,在批量处理时,整个被覆盖的块做整体处理,没整个覆盖的再挨个处理。

阅读全文 »

单调队列

单调队列是一种特殊的队列结构,通过维护队列元素的单调性(递增或递减),可以在O(1)时间内得到一段区间内的最值。

阅读全文 »

单调栈

栈内元素保持单调递增或单调递减的顺序,常用于解决"寻找最近的比当前元素大/小的元素"这类问题。

阅读全文 »

双指针(尺取)

通过两个(或多个)移动的标记,高效地探索或处理数据结构中的连续部分,以简化问题并加快求解速度,通常称为双指针、尺取或滑动窗口等。

阅读全文 »

离散化

离散化是一种将无限空间中的有限个体映射到有限空间中的方法,常用于处理数据范围很大但实际数据量较小的问题。

阅读全文 »
0%