Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求解某区间最大总长度的O(n logn)动态规划问题_Python_Algorithm_Math_Data Structures_Dynamic Programming - Fatal编程技术网

Python 求解某区间最大总长度的O(n logn)动态规划问题

Python 求解某区间最大总长度的O(n logn)动态规划问题,python,algorithm,math,data-structures,dynamic-programming,Python,Algorithm,Math,Data Structures,Dynamic Programming,N给出了间隔A_i=[S_i,F_i]表示每个间隔的开始和结束时间。所有间隔的开始和结束时间是不同的。我们希望最大化彼此重叠的选定间隔的总长度 问题1)使用O(n log n)时间,该问题的DP逻辑是什么? 问题2)是否等于加权间隔计划,使权重成为间隔长度?因为您的问题中提到了最大化总长度。 实际上,经典的间隔调度算法适用于最大计数而不是最大长度 因此,没有一种选择总是有效的 您需要按F_i对A_i进行排序,然后在每个步骤中按照从i=0到n的动态方法计算A_0到A_i的最大和间隔如果您要计算A-

N
给出了间隔
A_i=[S_i,F_i]
表示每个间隔的开始和结束时间。所有间隔的开始和结束时间是不同的。我们希望最大化彼此重叠的选定间隔的总长度

问题1)使用O(n log n)时间,该问题的DP逻辑是什么?


问题2)是否等于加权间隔计划,使权重成为间隔长度?

因为您的问题中提到了
最大化总长度。
实际上,经典的间隔调度算法适用于
最大计数
而不是
最大长度
因此,没有一种选择总是有效的


您需要按F_i对A_i进行排序,然后在每个步骤中按照从i=0到n的动态方法计算A_0到A_i的最大和间隔如果您要计算A-i+1,有两种情况A_i+1与上一步中找到的最大和没有重叠,然后将其添加到和中,否则如果有重叠,则找到所有与A_i重叠的A_iA-i+1和O(lgn)(二进制搜索)并删除它们,然后比较f(k)+A_i+1和A_i,决定是否保留A_i+1

请清理评论