A. Penchick and Modern Monument
因为 $n$ 很小,可以直接暴力$O(n^2)$ 判断每个位置不变的情况下,左右需要变几次
|
|
B. Penchick and Satay Sticks
易发现,每个数字最多交换一次到位,即它只可能在正确位置的左右,那我们只需要对每个位置判断即可,如果左右交换后为正确的就交换,反之就说明是 No
|
|
C. Penchick and BBQ Buns
首先可以发现,偶数时只需要两个两个填即可,但是奇数情况不确定
研究完全平方数后,可以发现 $9, 16, 25$ 三个数可以满足 3 个数填上后,相互之间的距离为完全平方数,即对应位置 $1, 10, 26$ 但是这样还是无法满足其他位置的需求,因为 $10 \sim 26$ 和 $26 \sim n$ 之间的个数都是奇数个,没法按偶数的直接填,那么就需要在这两个片段中各填一个使其变为偶数长度,同时最好不要影响后面填的数,可以发现是 $11, 27$ 是最优的那么只要是大于等于 $27$ 的奇数都是有解的
|
|
D. Penchick and Desert Rabbit
易想到,每个位置对应的最大值就是向后跳之后位置的前方的最大置
所以记录每个位置前方的最大值,后方的最小值
问题是如何处理每个位置上的跳跃:
- 如果 $pre[i] > suf[i+1]$ 那么 $i$ 一定能跳到 $i+1$ 对应的最大值 $i$ 可以先向前跳到 $pre[i]$ 对应位置,再跳到 $suf[i+1]$ 对应的位置,此时就能跳到 $i+1$ 对应的最大值
- 反之,即跳不到 $i+1$ 对应的最大值,此时的答案就是 $pre[i]$
|
|