P2789 直线交点数
考点
- 排列组合
题解
1 |
|
思路
无三线共点的含义是,当前直线要么与其他直线相交产生新的交点,要么与其他直线平行
根据这一特性,考虑采用分组的方式将情况分类
假设(x)
代表该组内有x
条直线平行,不在一个组内的直线相交
比如(2)、(3)
代表第1个组内有2条直线平行,第2个组内有3条直线平行
第1个组与第2个组相交,得到2 * 3 = 6
个交点
接下来以样例n == 4
举例,有{0、3、4、5、6}
共5种交点数

通过观察可以发现,实际上就是对整数n
进行拆分,对每一种可行的拆分方案执行如下操作:
假设有拆分方案
arr={1,1,2}
,实际上就是(1)、(1)、(2)
令初始时
cnt = 1 = arr[0]
,记录需要被交的直线个数;tot
记录交点数从
arr[1]
开始,此时arr[1] * cnt = 1 * 1 = 1
,tot += 1
,cnt += arr[1]
代表
(1)
已与(1)
相交走到
arr[2]
,此时arr[2] * cnt = 2 * 2 = 4
,tot += 4
代表
(2)
已与(1)、(1)
相交