1. 程式人生 > >【BZOJ】4445: [Scoi2015]小凸想跑步 半平面交/線性規劃

【BZOJ】4445: [Scoi2015]小凸想跑步 半平面交/線性規劃

題解

n105,可以列舉除01邊之外凸包上的所有邊與01邊列一個方程,解出式子ax+by+c=0a,b,c的值,使得ax+by+c>0ax+by+c<0,這樣可以列出n1個不等式來限制答案座標(x,y),加上之前凸包邊的限制。半平面交圈出來的區域就是可行的面積。

詳細講一下如何列方程(??):

設向量之間的叉積運算子號為,按逆時針順序給定凸包上的點ai(xi,yi),圖中存在點P(x,y),使得

SΔa0a1PSΔaiai+1P(1i<n),設an=a0

vi=(xi,yi)=(xix,yiy)

考慮SΔaiai+1P可以用叉積表示:SΔaiai+1P=vivi+12

上面的要求就可以轉化為:

v0v1vivi+1(1i<n)

展開vivi+1=xiyi+1xi+1yi得到: