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)\)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】