这是2010年太平洋ACM-ICPC竞赛中的一个问题。它的要点是试图找到一种方法来将一个三角形内的一组点分成三个子三角形,这样每个分区只包含三分之一的点。三角形分区
输入:边界三角形的
- 坐标:
(v1x,v1y),(v2x,v2y),(v3x,v3y)
- 若干
3n < 30000
表示躺在三角形 - 的
3n
点的坐标内部的点的数目:(x_i,y_i)
为i=1...3n
输出:
- ,其将三角形分成3子三角形,使得每个子三角形精确地包含
n
点A点(sx,sy)
。
分裂点将边界三角形划分为子三角形的方式如下:从分裂点到三个顶点中的每一个绘制一条线。这将把三角形分成3个子三角形。
我们保证这样的观点存在。任何这样的观点都足够了(答案不一定是唯一的)。
以下是n=2
(6分)的问题示例。我们给出了每个彩色点的坐标和大三角形每个顶点的坐标。分裂点以灰色圈起来。
有人建议的算法比O(n^2)
快?
你应该问这里:http://math.stackexchange.com/ – Ariel
这是一个算法问题,而不是一个数学问题。 – tskuzzy
我会用一个简单的方法。 – wildplasser