poj2462

时间:2024-11-28 22:36:37

看八戒在做这个题,我也做了做。。

坑很多,还是要注意细节。不得不吐槽,难道又到了计算几何只能套模板否则就一串WA的情况了么!

要不是八戒做出来了,这题我估计我也就扔到这里了。。哥不服啊~所以得做出来!

注意这个题,重复点、直线等关键词。还有,判断直线跟线段交点,需要先剪枝,就是判断这个线段端点跟直线端点叉乘是不是小于eps就行了。

poj2462

)

e-
?(x):-(x))<eps)

)
{
    point q2;
    , count;
    , q2.x = rand() + offset_x, q2.y = rand() + offset_y; i < n; i++)
    ) % n])) && (p[i].x - q.x)*(p[(i + ) % n].x - q.x) < eps && (p[i].y - q.y)*(p[(i + ) % n].y - q.y) < eps)
        ) % n], q2) < -eps&&xmult(p[i], q, p[(i + ) % n])*xmult(p[i], q2, p[(i + ) % n]) < -eps)
        count++;
    ;
}

];
        memset(p, , ; i < num_of_point; i++)
        {
            cin >> p[i].x >> p[i].y;
            ];; i < num_of_line; i++)
        {
            line temp;
            cin >> temp.a.x >> temp.a.y >> temp.b.x >> temp.b.y;

point intersects[];
            memset(intersects, , ;

; i < num_of_point; i++)
            {
                ], temp.a, temp.b) < eps)], temp.a, temp.b)) < eps)] };
                    point inter = intersection(a, temp);
                    intersects[count_of_intersects++] = inter;
                }
            }
            sort(intersects, intersects + count_of_intersects, cmp);
            ;
            ; i < count_of_intersects - ; i++)
            {
                point center = { (intersects[i].x + intersects[i + ].x) / , (intersects[i].y + intersects[i + ].y) /  };
                , p, (, ();
                 || flag == )
                    ans += dist(intersects[i], intersects[i + ]);
            }
            cout << fixed << setprecision() << ans << endl;
        }
    }
    ;
}

相关文章