22.最长k可重线段集问题¶
题目¶
给定平面x-O-y上n个开线段组成的集合I,和一个正整数k。试设计一个算法,从开线段集合I中选取出开线段集合S\subseteq I,使得在x轴上的任何一点p,S中与直线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题差不多。