P2789 (DP)

P2789 (DP)

\(f[i][l]\)表示有i条直线时,交点数为\(l\)的情况是否存在。存在则为1。

当有\(i\)条直线时,枚举有平行的直线数字\(j\)(多余的不管可以平行也可以不平行),以及交点数字\(k\)。得到转移方程:
\(f[i][j*(i-j)+k] |= f[i-j][k];\)
即,如果\(f[i-j][k]\)存在,那么\(f[i][j*(i-j)+k]\)存在。

就是说,在\(i-j\)条直线的情况下再加入\(j\)条直线,这样会多产生\(i*(i-j)\)个交点。

从小到大枚举\(1-i\)条直线,再枚举其中\(j\)条直线平行的情况,最后枚举交点个数\(k\)
其中\(k\)的个数等于 \(n*(n-1)/2\)
共计时间复杂度为\(O(n^4)\)

posted @ 2021-07-30 16:29  Paranoid5  阅读(34)  评论(0编辑  收藏  举报