首先很容易想到,对应于只有直线的情形,设 L(n) 表示有 n 条直线能将平面划分的最大块数,则
L(n)=L(n−1)+n
则有:
L(n)=L(n−1)+nL(n−1)=L(n−2)+n−1⋯L(2)=L(1)+2L(1)=L(0)+1
将上述方程组依次迭代可得:
L(n)=n+(n−1)+(n−2)+(n−3)+⋯+2+1+1=12n(n+1)+1
直线的情况解决了,V型射线也好解决,只要将V型射线交点(端点重合处)反向延长并当做两条直线处理就和只有直线的情况基本一样,值得注意的是,1个V型射线对应于两条直线的情况再减去2,即
Γ(m)=L(2∗m)−2m
所以有 n 条直线
F(n,m)=L(n+2m)−2∗m=12(n+2m+1)(n+2m)+1
注意数据范围,所以用long long处理即可。