抽象一下问题就是上下两条线,每个抛物线抽象为一条线段(端点为两个端点),其实每次先插入一个抛物线在上面,如果和已有的有问题,就反过去(移到下面,如果还有冲突,这个不动,其他动),这样调整,如果调整不了了,那就不能达成,否则就一定可以达成。
由于不要求最优解,这样的算法一定是正确的。
关键问题就是如何快速地判断冲突和进行调整。
不知是否有问题……
写到一半发现不对
因为染色的线段可能有重合的
比如抛物线 (1, 5) 和 抛物线 (2, 3) 不能算相交,但是它们重合
重合的话调整起来就麻烦了,而且怎么存储重合呢?
但是如果有几千个抛物线重合的话,假设在下面。然后新加入的抛物线和上面某几千个有冲突,要调整到下面,而它的顶点在下面那几千条抛物线的最里面,这样又和下面这几千条重合,这样你不论上/下总必须要移动几千条抛物线了吧。。。。这怎么处理呢
比如抛物线都是:
(1, 100000)、(1, 99999)、(1, 99998)、。。。、(1, 3)
重合吧,你处理完了之后,再来个
(0, 2)
又完了
假设因为某些原因(比如和其他抛物线有冲突),(0, 2) 这一段不能动,那么你所有的诸如 (1, 3)、(1, 4)、..、(1, 100000)这么多段都要移下去。。。。
这不久挂了。。。
快速帮助 | 运行状态 | 反馈举报 | 关于我们 | 免责声明 | 浙ICP备11060257号 Processed in 0.0035 Second(s) Copyright (C) RQNOJ 2007-2019. All Rights Reserved.