为了将纸张放在文件夹中,必须将它们与订书机连接。例如,订书机最多可容纳10张纸。需要3个订书机才能将25张纸粘在一起。如果第一个订书机用于1-10的纸张,第二个订书机用于10-19,第三个用于19-25,那么只需要一个文件夹。如果第一个订书机用于纸张1-10,第二个订书机用于8-18,第三个订书机用于16-25,也只需要一个文件夹。如果第一个订书机用于1-10的纸张,则第二个从12-21开始,第三个用于21-25个三个文件夹,因为第一个文件夹将包含1-10,第二个文件夹11和第二名是12-25 整数正数的数组a1,a2 ...... an和b1,b2 ...... bn代表将要钉合的ai到bi的纸张,其中ai <1。 bi = i = 1,2..n。输入数据是L个元素和n个订书机。第i个订书机将纸张从ai转到bi,其中包括ai和bi。如果订书机最多可以容纳任意数量的文件,那么可能产生的文件夹数量是多少?
我必须编写一个具有O(n)复杂度的算法,如果L是n的阶数并且具有独立于L的O(nlogn)复杂度的算法,则该算法解决了该任务,但我不确定如何处理该任务。任何帮助,将不胜感激!
答案 0 :(得分:0)
对于O(NlogN)部分。
您需要根据起点(a的数组)对间隔(订书机)进行排序。
您遍历间隔数组。跟踪最后一页(间隔关闭的地方)。如果下一个间隔在最后一页之前开始,则将最后一页更新为下一个间隔的最后一页之前的最大页数。如果它在最后一页之后开始,那么你有一个完整的文件夹(所以在结果中添加一个),你可能在它们之间有可能需要一个文件夹的免费页面。
注意如何计算页数并确保在第一个订书机之前和最后一个订书机之后正确占用免费页面,因为很容易造成+/- 1错误。
复杂性来自排序部分。其余的是线性的。