[LibreOJ NOI Round #2]不等关系

不等关系

题解

感觉有点麻烦,可能还是我太差了。

首先我们先考虑不管">“的情况,我们得到的就是一串断断续续的的”<"序列。
很容易发现,连在一起的部分就是要求出一个这么长的递增序列。
我们令这些递增序列的长度为 { a 1 , . . . , a k } \{a_{1},...,a_{k} \} { a1,...,ak},我们就是要从这 n n n个数中得到这 k k k个长度为 a a a的递增序列,这个值是比较好算的,就是 n ! ∏ i = 1 k a i ! \frac{n!}{\prod_{i=1}^{k}a_{i}!} i=1kai!n!
相当于先得到一个 n n n的排列,将其分开后再去掉某一段内部不合法的情况,很明显,对于任意一段,其内部合法的情况应该是唯一的。

对于含有">“的情况,我们可以通过容斥求出。
d p i dp_{i} dpi表示长度为 i i i的排列合法的概率, f i f_{i} fi表示长度为 i i i的排列的合法的情况数, c n t i cnt_{i} cnti表示以 i i i为止的前缀中含有”>"的个数。
由于, f i = ∑ j ∈ [ 1 , i ) , s j = ′ > ′ ( − 1 ) c n t i − 1 − c n t j f j C i

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值