25noip20d2t2 马戏表演

noip20d2t2

因为笨 写的详细一点。

题意

给定 n,m,对于长为 n 的排列 a,\(cnt_i=\sum_{1\leq l\leq i\leq r\leq n}[\max_{j=l}^r a_j=a_i]\)。求有多少排列 a 满足所有 \(cnt_i\) 都小于等于 m,答案对质数 p 取模。


题解

$ \text{cnt}_i $  是 “所有包含 i 的区间  $ [l, r] $  中,最大值为  $ a_i $ (即 M)” 的区间数量。

区间的左端点 l 可以选  $ 1 \sim i $ (共 i 种选择);

区间的右端点 r 可以选  $ i \sim n $ (共  $ n - i + 1 $  种选择)。

因此,满足条件的区间总数为 l 的选择数  $ \times $  r 的选择数,即: $ cnt_i = i \times (n + 1 - i) $

对于长度为 i 的排列,设全局最大值的位置为 p( $ 1 \leq p \leq i $ ),则该位置的  $ \text{cnt}_p = p \cdot (i - p + 1) $ (左端点有 p 种选法,右端点有  $ i - p + 1 $  种选法)。

函数  $ p \cdot (i - p + 1) $  是关于 p 的二次函数(开口向下),其最大值出现在  $ p \approx \frac{i+1}{2} $  时。

此时最大值为: $ \max_{p} \left( p \cdot (i - p + 1) \right) = \lceil \frac{i}{2} \rceil \cdot \left( i - \lceil \frac{i}{2} \rceil + 1 \right) $

条件  $ \lceil \frac{i}{2}\rceil \cdot (i - \lceil \frac{i}{2}\rceil + 1) \leq m $  表示:长度为i的排列中,全局最大值位置的最大可能 $ \text{cnt} $ 不超过 m 。

根据之前的结论:若全局最大值的 $ \text{cnt} $ 不超过m,则其两侧的子排列(左侧 $ [1, p-1] $ 和右侧 $ [p+1, i] $ )是 “天然合法” 的 —— 即子排列中所有位置的 $ \text{cnt} $ 必然都不超过 m(因为子排列的最大 $ \text{cnt} $ 小于全局最大值的 $ \text{cnt} $ )。

由于全局最大值的最大可能 $ \text{cnt} $ 已不超过m,且两侧子排列天然合法,因此任意长度为 i 的排列都满足 “所有位置的 $ \text{cnt} $ 不超过 m”。而长度为i的排列总数为  $ i! $ ,故此时  $ f_i = i! $ 。


若全局最大值位置合法,需:从剩下的  $ n-1 $  个数中选 i 个,排列到 “更短的子排列” 中(选法数为  $ \binom{n-1}{i} \cdot i! = \frac{(n-1)!}{(n-i)!} $ ,其中  $ \binom{n-1}{i} $  是选数, $ i! $  是子排列的排列方式);剩下的  $ n-i $  个数构成 “更长的子排列”,其合法数为  $ f_{n-i} $ (子排列的合法性与元素相对大小有关,递归求解)。

对所有可能的 “更短侧长度 i”,累加 “选数 + 子排列合法” 的情况,并乘 2(对称情形),得到: $ f_n = 2 \sum_{i=1}^{\lfloor n/2 \rfloor} \left[ i(n+1-i) \leq m \right] \cdot \frac{(n-1)!}{(n-i)!} \cdot f_{n-i} $

可以移个项。用个 \(h_i=\frac{f_i}{i!}\) 代码好看点。

https://zhengruioi.com/submission/973679

数组要开够。

posted @ 2025-10-14 20:45  Slayer-WT!!!!!!!!  阅读(12)  评论(1)    收藏  举报