跳转至

22.最长k可重线段集问题

题目

给定平面x-O-yn个开线段组成的集合I,和一个正整数k。试设计一个算法,从开线段集合I中选取出开线段集合S\subseteq I,使得在x轴上的任何一点pS中与直线x=p相交的开线段个数不超过k,且\sum_{z\in S} |z|达到最大。这样的集合S称为开线段集合I的最长k可重线段集。\sum_{z\in S} |z|称为最长k可重线段集的长度。

对于任何开线段z,设其断点坐标为(x_0,y_0)(x_1,y_1),则开线段z的长度|z|定义为:

|z|=\lfloor\sqrt{(x_1-x_0)^2+(y_1-y_0)^2}\rfloor

对于给定的开线段集合I和正整数k,计算开线段集合I的最长k可重线段集的长度。

题解

其实和21题差不多。