假设我有一组间隔对,例如。 v = {(1,4), (5,10), (11,13), (14,25)}
现在假设我有数字 20,我想拆分 20 对,或者我想删除 (14,25) 对并添加新的两对 - (14,20) 和 (21, 25).我如何在 C++ 中执行此操作,或者仅如何搜索这些间隔并找到其中的间隔是数字 20。
我的想法是创建成对的 vector ,我将在其中保留我的间隔,但我不知道如何分割间隔,而且我必须在对数时间内完成,所以我必须使用二进制搜索。
最佳答案
在这种情况下搜索使用
std::upper_bound() or std::lower_bound()
获取要更改的间隔索引并继续。我在 codeforces 上解决了一个类似的问题,但我只是想告诉索引数字下降的位置。
关于c++ - 如何对间隔进行二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39820603/