区间跳跃问题
Posted tyh-tyh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区间跳跃问题相关的知识,希望对你有一定的参考价值。
区间跳跃问题
有时我们会碰到需要跳着区间处理的问题,这个时候目前我接触到的有两种思路:
一是利用(set)来处理,因为(set)可以从序列中删除元素,利用好一个或者多个(set),就可以完美地解决问题。
二是利用并查集来处理,如何实现跳点呢,看跳的方向是单向还是双向,决定建立几个并查集,维护即可。
下面拿两个例题来解释一下。
-
这个题大意就是有(n)个骑士,每次给出一个区间和一个(x),区间内的所有骑士如何还没有被打败,就会被(x)打败,当然,自己不会打败自己,最后输出每个骑士被谁打败,最终存活的人,则输出0.
解法 :用并查集乱搞即可,刚开始赋初值为(i),随后在更新时更新为(i+1),一直迭代至当前未被击败的端点即可。
-
这个题大意是给出一个由1-n组成的序列,对其进行划分,每次取当前未被选取的最大的数的两侧k个数,按轮次标号为1或2。
解法:可以用(set)实现,主要是增加删除操作;
? 也可以使用并查集,因为是两端搜索,所以建立两个并查集,分别存储当前点的左端点和右端点,存在并查集中方便更新,按轮次进行赋值即可,每次利用并查集寻找k个。
以上是关于区间跳跃问题的主要内容,如果未能解决你的问题,请参考以下文章