如何找到最大长度间隔,即开放间隔的总和? c/c++
How can I find maximum length interval, which is sum of open intervals? c/c++
我的问题是:
给你 n 个元素的数组:struct Interval {int x; int y}; 该数组的元素是开放间隔。我必须找到 T 区间(或更小),其总和是一致的最大长度区间。
我考虑过使用间隔树,但不知道如何解决问题。
按值对所有间隔边界点进行排序(按值)以及表示间隔开始和结束的键+1/-1
(在键值的情况下:-1 在 +1 之前为开放间隔)
ActiveCount = 0
遍历排序列表,按键值递增ActiveCount
。
当ActiveCount
变为非零时,区间并集开始,当它变为零时 - 区间并集结束。找到最长的结束起点差值。
对于您的示例(部分):
(0;3), (1;4), (5;7), (2;3)
make pairs
(0, 1), (3,-1), (1, 1), (4, -1), (5,1), (7,-1), (2,1), (3,-1)
sorted
(0, 1), (1, 1), (2,1), (3,-1), (3,-1), (4, -1), (5,1), (7,-1)
ActiveCount
1 2 3 2 1 0 1 0
^ ^
start end
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何找出GDB的SIGTRAP核心转储的根本原因
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 找不到QtResource文件中的文件
- Python中的for循环与C++有何不同
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",