专栏文章
洛谷 P11511 [ROIR 2017 Day 2] 大型直线对撞机 题解
P11511题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqkbnq2
- 此快照首次捕获于
- 2025/12/04 06:12 3 个月前
- 此快照最后确认于
- 2025/12/04 06:12 3 个月前
洛谷 P11511 [ROIR 2017 Day 2] 大型直线对撞机题解
题目概括:
在一根无限长的数轴上,有 个粒子,它们各有两种状态,分别是正负两种,正电子向数轴正方向运动,负电子像数轴负方向运动,速度都为 。当正电子和负电子相撞,则会消失。问:当 秒时,数轴上还有多少粒子。
分析:
由于 的给出是单调递增的,所以我们不难发现,输入时,若是一个负电子,那么与它最先发生碰撞的就是离它最近的被输入进来的正电子,那么我们就一定知道每个粒子消失的时间(如果它会消失的话)。
那么如何维护呢?那当然会想到栈,每次遇到一个正电子就将它放进栈中,那么在栈顶的一定就是后输入进来的正电子,每输入一个负电子我们就将栈顶的正电子弹出去,然后计算它们的相撞时间 。
设栈顶元素坐标为 ,当前元素坐标为 。
最后进行模拟,先将 数组从小到大进行排序,定义一个标记变量 表示枚举到 数组的第 位,如果 数组的第 位 就说明这两个粒子在 前就已经被消失了,所以 就往后移,同时答案减 。
由于有些粒子从一开始就不会被消失,所以就设它们的时间为无穷大。
代码:
说明:我的代码是看了这位大佬的题解,至于我的代码,也不知道什么原因惨痛爆 ,所以代码在此就不放了。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...