CF195B After Training 题解

Posted on 2024-03-03 18:31  _XOFqwq  阅读(2)  评论(0编辑  收藏  举报

结论题。

首先第一次放置一定处于中间,即 \(pos = \lfloor \dfrac{m+1}{2} \rfloor\) 处,其中 \(pos\) 为当前放置的位置。

接下来要放置的位置可能在现在位置的左边或右边。

我们可以猜测到最终的放置方式应当为先左后右,以此类推。

进一步的:

  • \(pos\) 左边对称的篮筐没有被放置(判断 \(pos\) 是否 \(<mid\),是则被放置了。\(mid\) 为正中间的位置),则根据题目给出的优先级,接下来一定放置在其对称的左边篮筐,即 \(m-pos\) 处;

  • 否则放在它右边对称的的篮框中,即 \(m-pos+1\) 处。

上面的结论建议自行画图理解。

同时,还有一个特判,就是当 \(pos=m\) 时(说明所有篮筐都放了一遍),则需要令 \(pos=mid\)(即重新开始放一轮)。

有了上面的结论,代码就很好写了。时间复杂度 \(O(n)\)