第三十次
A
设 $f_i$ 表示 $n=i$ 时剩下的数,则第一轮取数后问题变为规模小 $\left\lceil\dfrac ik\right\rceil$ 的子问题,
$n=i-\left\lceil\dfrac ik\right\rceil$ 时剩下 $f_{i-\left\lceil\frac ik\right\rceil}$,则 $n=i$ 时剩下第一轮没删的倒数第 $f_{i-\left\lceil\frac ik\right\rceil}$ 个数。
B
设 $f_{i,j}=P(a_i>a_j)$,考虑一次交换 $x,y$ 的操作对 $f$ 的影响。
$i,j$ 均不为 $x,y$ 的 $f_{i,j}$ 显然不被影响,
$f_{i,x},f_{i,y}$ 有 $\dfrac 12$ 概率不变,有 $\dfrac 12$ 概率互换,于是 $f_{i,x},f_{i,y}\gets\dfrac{f_{i,x}+f_{i,y}}2$,$f_{x,i},f_{y,i}$ 同类。
$f_{x,y},f_{y,x}$ 有 $\dfrac 12$ 概率不变,有 $\dfrac 12$ 概率互换,于是 $f_{x,y},f_{y,x}\gets\dfrac{f_{x,y}+f_{y,x}}2$。
C
线段树维护斜率单调递增栈大小。
首先左孩子的单调栈是可以直接继承过来的,因为左边没有其他数。考虑右孩子贡献。
如果右孩子的左孩子最大值 $\le$ 左孩子最大值,那么右孩子的左孩子没用,递归求右孩子的右孩子贡献。
否则右孩子的右孩子在右孩子单调栈中的贡献全部继承,递归求右孩子的左孩子贡献。
D
钦定 $n\ge m$。
点 $(i,j)$ 表示还剩 $i$ 个 $\texttt{Yes}$,$j$ 个 $\texttt{No}$ 的状态,则任意 $(n,m)$ 到 $(0,0)$ 的折线可以表示一个答案序列,
向左走表示选 $\texttt{Yes}$,向右走表示选 $\texttt{No}$,则红色线段可以表示每个状态下的最优决策,
答对题数即为最优决策和答案序列的重合部分,题目所求即为随机折线期望与多少红色线段重合。
把折线到达斜线上方的部分沿斜线折下来,此时所有折线与 $n$ 条红色线段重合,
而经过斜线,且在斜线上往左走的折线被少算了,
经过 $(i,i)$ 的折线,前 $2i$ 步必有 $i$ 步向右,后 $n+m-2i$ 步必有 $n-i$ 步向右,
则经过 $(i,i)$ 的折线共有 ${2i\choose i}{n+m-2i\choose n-i}$ 种,在 $(i,i)$ 处向左走的折线共有 $\dfrac{{2i\choose i}{n+m-2i\choose n-i}}2$ 种,
少算的贡献即为在斜线上每个点向左走的折线个数之和,即 $\sum\limits_{i=1}^m\dfrac{{2i\choose i}{n+m-2i\choose n-i}}2$,答案即为 $n+\dfrac{\sum\limits_{i=1}^m\dfrac{{2i\choose i}{n+m-2i\choose n-i}}2}{n+m\choose n}$。