博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
区间跳跃问题
阅读量:5262 次
发布时间:2019-06-14

本文共 545 字,大约阅读时间需要 1 分钟。

区间跳跃问题

有时我们会碰到需要跳着区间处理的问题,这个时候目前我接触到的有两种思路:

一是利用\(set\)来处理,因为\(set\)可以从序列中删除元素,利用好一个或者多个\(set\),就可以完美地解决问题。

二是利用并查集来处理,如何实现跳点呢,看跳的方向是单向还是双向,决定建立几个并查集,维护即可。

下面拿两个例题来解释一下。

  • 这个题大意就是有\(n\)个骑士,每次给出一个区间和一个\(x\),区间内的所有骑士如何还没有被打败,就会被\(x\)打败,当然,自己不会打败自己,最后输出每个骑士被谁打败,最终存活的人,则输出0.

    解法 :用并查集乱搞即可,刚开始赋初值为\(i\),随后在更新时更新为\(i+1\),一直迭代至当前未被击败的端点即可。

  • 这个题大意是给出一个由1-n组成的序列,对其进行划分,每次取当前未被选取的最大的数的两侧k个数,按轮次标号为1或2。

    解法:可以用\(set\)实现,主要是增加删除操作;

    ​ 也可以使用并查集,因为是两端搜索,所以建立两个并查集,分别存储当前点的左端点和右端点,存在并查集中方便更新,按轮次进行赋值即可,每次利用并查集寻找k个。

转载于:https://www.cnblogs.com/TYH-TYH/p/10747781.html

你可能感兴趣的文章
delphi中exit,abort,break,continue 的区别
查看>>
asp.net的图片、文件上传
查看>>
常用正则
查看>>
Android网络之数据解析----使用Google Gson解析Json数据
查看>>
Python之类
查看>>
五款前端开发编辑器测评
查看>>
业务流程学习(1)
查看>>
week2--线性表
查看>>
txt文件太大打不开怎么办
查看>>
python - threading.local
查看>>
Python--函数
查看>>
安装虚拟机与Linux的学习
查看>>
为什么不能分开模板的声明和定义,把定义放到.cpp文件中?
查看>>
MVC 中Simditor上传本地图片
查看>>
失恋阵线联盟
查看>>
水晶报表攻克系列2-程序加载水晶报表
查看>>
vue从入门到进阶:计算属性computed与侦听器watch(三)
查看>>
GitHub开源控件的使用合集
查看>>
RxJava使用介绍
查看>>
Android ListView快速定位(三)
查看>>