rank | solved | A | B | C | D | E | F | G | H | I | J |
---|---|---|---|---|---|---|---|---|---|---|---|
19 | 6 | ! | O | . | O | O | O | O | . | ! | Ø |
A
UnSolved by Forsaken.
B
Solved by Henry.
在两棵字典树上贪心地往下跑,能跑 $00$ 或者 $11$ 就往下跑。
注意,最后的结果要排一下序,防止块间存在问题。
D
Solved by Forsaken.
绝对值函数将整个值域分成 $n+1$ 段,分别解出答案即可。
E
Solved by Henry.
枚举每个位置,搜索排列。
F
Solved by XLor.
贴个 exkmp。
G
Solved by Henry.
$f(n)=f(n-1)+f(n-3)$,在讨论一下首尾的情况即可。
H
UnSolved by Forsaken.
J
UpSolved by XLor
首先,搞出每个数的限制范围区间,显然出现在第 $i$ 次操作的数,右端点为 $n+i-1$,否则为 $2n$。再考虑左端点,对于每个数,最小值操作比其大的会有影响,最大值操作比其小的会有影响,单调栈维护,二分出限制的左端点。
然后,贪心,从左到右考虑每个位置,如果当前位置对于某个数必选,那么选上,如果有多个数必选,则无解,否则选出可选的中最小的。
贪心的做法字典序一定最小,因此正确性只需要证明每个位置能够放数字,考虑一组可能解的数组,其前 $k-1$ 和当前算法的运行结果一致,可以证明在有限次交换调整操作后,可以使得第 $k$ 位满足。