第四十九次
时效性
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,