专栏文章
题解:P7115 [NOIP2020] 移球游戏
P7115题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miqnszst
- 此快照首次捕获于
- 2025/12/04 07:49 3 个月前
- 此快照最后确认于
- 2025/12/04 07:49 3 个月前
暑假 vp 的时候连 的常规解法都没想到,于是一波爆搜强行构造 方案喜提 分。
当时还不会按照值域 分治的 trick,不过后来见到了无数次这种 trick。
我印象中这个题也是分治构造的。 P9731 [CEOI2023] Balance
下文中将柱子称为栈 ,毕竟两者的用法是一样的。
先思考 时候的解法,记录两个栈为 和 ,分别目标为 球和 球。我们现在想要其中一个栈变成全 。我们发现 和 都往空栈里面放一点东西进去似乎只有暴搜放进去的顺序然后 和 栈互相搞一下的很暴力的做法,没有可扩展性。
有没有什么好办法去分离 和 两种小球呢,只有两个空栈能办到。我们现在只有一个空栈,转念一想,其实我们可以再创造两个半空栈,设 中有 个 ,那么我们只需要从 中挪 个球给 。不妨设 ,然后将 中球依次弹出,如果是 则放入 中,如果是 则放入 中,这次操作把部分 和 聚集在了一起。
接着,把 和 栈顶的 段全部再放回 中,这一步我们实现了对于 的排序。
将 中的所有数移动到 中,再把 中顶端的 段放入 中。这一步我们实现了将 和 段分别独立地放在 和 中。
然后就是处理 了,我们只需要根据是 还是 分别放入 或者 即可。
这样子我们就完美解决了 的情况。
那么对于 的时候呢?把问题转化到 !
我们设 表示正在处理颜色为 范围内的球。我们将 的球全部看成一种颜色,将 的球看成另一种颜色,然后执行 的算法就可以将 的球放在一起, 的球放在一起,然后再分别进行操作 和 就可以继续分治下去解决问题了。
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...