第四十九次

时效性

A

$\sum\limits_{i=1}^r\sum\limits_{j=0}^ia_jb_{i-j}=\sum\limits_{j=0}^ra_j\sum\limits_{i=0}^{r-j}b_i$,容易 $O(n)$ 单次。

B

考虑 $a_ix+b_iy>a_jx+b_jy\Leftrightarrow\dfrac xy>\dfrac{b_j-b_i}{a_i-a_j}$,记 $s_{i,j}=\dfrac{b_j-b_i}{a_i-a_j}$,

则 $\dfrac xy>s_{i,j}$ 时 $a_ix+b_iy>a_jx+b_jy$,$\dfrac xy<s_{i,j}$ 时 $a_ix+b_iy<a_jx+b_jy$,

$\dfrac xy=s_{i,j}$ 时 $i,j$ 任意排名,可以涵盖上面的情况,所以只需考虑这些取值。

枚举 $\dfrac xy$ 的取值 $k$,此时 $i,j$ 连通当且仅当 $i,j$ 任意排名,则此时的排名方案数为所有连通块大小阶乘之积。

注意所有 $i$ 比 $j$ 劣的方案之前已经算过,所以要减一。

C

不是前缀最大值的 $b_i$ 必定填在 $a_{i+m-1}$,否则操作结束后该值会在 $i$ 位之前。

是前缀最大值的 $b_i$ 可以填在 $a_{[1,i+m-1]}$,因为 $b_{[1,i-1]}$ 已被占据,而其后比它小的数必不是前缀最大值,必填在 $i+m-1$ 后,

所以它不会被挤到 $i$ 后,必定落在 $i$ 位置。

把这 $z$ 个前缀最大值拿出来离散化,此时问题形如 $i$ 可以填在 $a_{[1,i+m-1]}$,问第 $k$ 小排列。

$\forall i\le \max(z-20,0)$ 必有 $a_i=i$,否则排名 $>20!>k$。

依次暴力填后 $20$ 位即可。

D

可以考虑插头 DP,

posted @ 2023-10-07 21:23  Jijidawang  阅读(2)  评论(0编辑  收藏  举报  来源