第一次接触DP数组,完全不会做,借助此篇博客研究下洛谷用户@_std_xzh结题过程。
解题思路
定义DP状态表示当前已经有
个元素出栈,
个元素在栈中。
- 当初始时,只有一种情况——将元素入栈,即需要将所有的
初始化为1。
- 当栈中没有元素时(
时),则只能将元素入栈。入栈元素后接下来一系列步骤可能得情况数应该为当有
个元素出栈,还剩余1个元素出在栈中时有的情况数。则在
处可能出现的情况数为
=
。
- 当栈中有元素时(
时),则既可以将元素出栈也可将元素入栈。在出栈时,若暂时将该出栈元素拿至他处(一种类似于缓冲区的地方),则此时栈的状态与出栈元素数为
,栈中元素为
的状态相同。在入栈时,则此时出栈的元素数量保持不变为
,栈中的元素数量将达到
个。则在
处可能出现的情况总数为
。
学习心得
【2026.05.11】个人感觉首先需要提取出最关键的,用来构建DP数组的行列的含义。在一开始时我考虑的行是出栈后首位是0,1,2,3.......的哪一个,列是(?自己也想不清楚了)。在看了题解后我最先理解的是原文为啥使用来分别做出栈数和栈中数。随后在自己梳理结题思路的过程中发现其实计算
时所在的状态时确实可以利用之前已经计算好的结果来构建出转移方程。
727

被折叠的 条评论
为什么被折叠?



