CF195B After Training 题解

结论题。

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

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

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

进一步的:

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

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

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

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

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

posted @   _XOFqwq  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示