NOIP 第五次
A
截到第一个 $1$。
B
设最小生成树上 $x\to y$ 的最大值为 $k$,那么若边 $(x,y)$ 不在原图中,则其可取 $(k,M]$ 中不在原图中的所有权值。
对最小生成树上每条边统计有多少条不在原图中的边以它为取值区间的左端点,这样可以统计出所有取值区间。
按取值区间从窄到宽依次给边赋权,如果能赋完就说明存在方案。
C
先考虑 $a$ 是排列的情况。
设 $f_{l,r,i}$ 表示 $[l,r]$ 中只考虑不超过 $i$ 的数的答案,
首先若 $i$ 不在 $[l,r]$ 中,$f_{l,r,i}=f_{l,r,i-1}$。
否则设 $i$ 在 $[l,r]$ 中的 $m$ 位置,则 $b$ 中 $i$ 一定在 $[m,r]$ 中,
且因为 $i$ 是考虑的数中最大的,拿出 $i$ 后堆一定为空,
所以若设 $b$ 中 $i$ 在 $k$ 位置,则 $b_{[l,k]}$ 一定恰好由 $a_{[l,k]}$ 构成,
由此还可以推得 $b_{(k,r]}$ 一定恰好由 $a_{(k,r]}$ 构成。
枚举 $k$,$i$ 已确定在 $k$ 位置,
则 $b_{[l,k]}$ 的方案数即为 $a_{[l,k]}$ 中小于 $i$ 的数的答案,即 $f_{l,k,i-1}$,
$b_{(k,r]}$ 的方案数即为 $a_{(k,r]}$ 中小于 $i$ 的数的答案,即 $f_{k+1,r,i-1}$,
则有 $f_{l,r,i}=\sum\limits_{k=m}^r f_{l,k,i-1}\times f_{k+1,r,i-1}$。
$a$ 不是排列,把所有数按值为第一关键字,下标为第二关键字排序为 $c$,
然后把 $a$ 中每个数替换为其在 $c$ 中的排名即可把 $a$ 转成排列。
D
啥玩意,看不懂啊。