Atcoder DP Contest T题解

一道需要一定分析的 dp 题目。

atcoder 题目传送门 & 洛谷题目传送门

更好的阅读体验


Description

给定 n n n 和一个长度为 n − 1 n-1 n1 的字符串(由 ‘<’ 和 ‘>’ 组成),求数列 1 , 2 , . . . , n 1,2,...,n 1,2,...,n 有多少种排列,使得相邻数之间的大小关系与字符串中大于号小于号相符合,答案对 1 0 9 + 7 10^9+7 109+7 取模。

  • 1 ≤ n ≤ 3000 1\le n\le 3000 1n3000

Solution1

analysis

先给出本题的一个重要结论

对于这一序列的任何一个子序列,在其内部排列时我们只需要关心每个数的大小关系,而不是每个数具体的值。

举例:

序列6,9,11在进行内部排列时,我们可以将其视为1,2,3

所以:

我们只要考虑上一个数是什么,保证满足大小关系放数就行。

这样我们得到了一个显然的 dp 状态:

  • d p i , j dp_{i,j} dpi,j 表示考虑到第 i i i 个位置,前面一个数是前面排列中 j j j(上面已经得出结论,第 j j j 大的数就视为 j j j 参与排列)的可能数。

转移:

分为两种情况:当前的数 > 上一个数 & 当前的数 < 上一个数

  • 枚举上一个数在之前序列中大小排名 k k k,通过相对大小关系得到转移方程:

d p i , j = { ∑ k = 1 j − 1 d p i − 1 , k s i − 1 = ′ < ′ ∑ k = j i − 1 d p i − 1 , k s i − 1 = ′ > ′ dp_{i,j}=\begin{cases}\sum\limits_{k=1}^{j-1}dp_{i-1,k}&s_{i-1}='<'\\\sum\limits_{k=j}^{i-1}dp_{i-1,k}&s_{i-1}='>'\end{cases} dpi,j=k=1j1dpi1,k

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值