区间上的点到点的hash(即判断区间中的点,位于第几区间)(更新待续中...)

本文探讨了一种使用Hash算法来确定区间内点的位置问题,旨在优化区间查询效率。通过算法解析,阐述如何将点映射到特定的区间上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先若区间较小,可以开的下,直接开整个区间的数组hash,
1)静态查询:
node保存区间节点信息,直接查询hash的node的id即可
2)动态更新,点查询:
node保存区间节点信息
查询时,同样直接查询hash的node 的id即可
更新时比较麻烦,但也可以实现(可用树状数组,线段树维护)


下面是处理不能直接开整个区间数组hash的情况
1.静态查询
Vector 或 MAP
node保存区间节点信息
(1)计算区间的右边界,插入vector,二分查找,判断第几区间即可。
(2)计算区间的右边界,插入map。
注:不能用set,因为无法判断set中元素的名次。但是可以用平衡树treap等实现,不过就比较麻烦了。
2.动态更新点,查询点
MAP
node保存区间节点信息
计算区间的右边界,插入map,对应node的id。
更新时,计算更改的区间,先删除,在插入。
注:
1)不能用set,原因同1。
2)下面第二个例子的用法,同样需要更新,但是只要查询点所在区间的范围,用set的做法很简单。


例子:
1.一个区间的连续子区间(区间不交叉)到点的映射
1)静态:cf234 D题(此题没有要求动态更新)
D. Dima and Bacteria
题目有两种做法,并查集+floyd和搜索+floyd
搜索+floyd(判断时注意种类内可通过种类间来转移能量):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值