弹弹床(连续段dp)

题目简述


一排格子,每个格子上有“L”或“R”,表示向左或向右跳到任意位置。问从任意位置出发跳完所有的格子在第\(i\)格子结束的方案数。答案对 \(10^9 + 7\) 取模。

分析 & 性质


  • 考虑一个选取方案,取的位置序列为排列
  • 与相对位置有关的信息可以考虑插入顺序

最终思路


使用连续段dp的方法(从小到大插入):

  • 插入到段的两端,可知“L”只能插到段左侧,“R”插到右侧
  • 发现连续段关于插入时刻为单谷,“R”在谷,“L”在连接处(合并后的峰)

可知dp柿子:
\(dp[i][j] \times (j - 1) \rightarrow dp[i + 1][j - 1]\ (ch_i == L)\)

\(dp[i][j] \times (j + 1) \rightarrow dp[i+ 1][j + 1]\ (ch_i == R)\)

\(dp[i][j] \times j \rightarrow dp[i + 1][j]\)

对于最终答案,将对应位置放到操作序列末端,然后将反着dp的峰与正着dp的谷拼上。

  • 对于接口处下半部分为谷右侧“R”, 上半部分为峰左侧为“R”,可连接,其他同理。

[足浴の其他练习参考]( https://www.cnblogs.com/chroneZ/p/17299874.html#:~:text=1 连续段 dp 过程的一个特点是,不考虑各连续段的状态如何,只考虑 整体 上存在多少个连续段,各连续段的状态之和是多少。 2 一般连续段 ,%E8%BF%9E%E7%BB%AD%E6%AE%B5%20dp%20%E4%B9%8B%E6%89%80%E4%BB%A5%E8%83%BD%E5%A4%9F%E9%81%BF%E5%85%8D%E8%AE%B0%E5%BD%95%E4%BF%A1%E6%81%AF%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E6%98%AF%E5%9B%A0%E4%B8%BA%E5%85%83%E7%B4%A0%E7%9A%84%E6%8F%92%E5%85%A5%EF%BC%8C%E8%BF%9E%E7%BB%AD%E6%AE%B5%E7%9A%84%E5%90%88%E5%B9%B6%E7%AD%89%E6%93%8D%E4%BD%9C%E5%9D%87%E5%9C%A8%E8%BF%9E%E7%BB%AD%E6%AE%B5%E7%9A%84%20%E4%B8%A4%E7%AB%AF%20%E8%BF%9B%E8%A1%8C%EF%BC%8C%E8%80%8C%E7%94%B1%E4%BA%8E%E6%88%91%E4%BB%AC%E6%98%AF%E6%8C%89%20%E7%89%B9%E5%AE%9A%E9%A1%BA%E5%BA%8F%20%E4%BE%9D%E6%AC%A1%E6%8F%92%E5%85%A5%E5%85%83%E7%B4%A0%E7%9A%84%EF%BC%8C%E5%9B%A0%E6%AD%A4%E7%AB%AF%E7%82%B9%E7%9A%84%E4%BF%A1%E6%81%AF%E6%98%AF%E4%BE%BF%E4%BA%8E%E7%BB%B4%E6%8A%A4%E7%9A%84%E3%80%82%20)

posted @ 2023-10-16 19:44  langligelang  阅读(119)  评论(0)    收藏  举报