1. 程式人生 > 其它 >荒島探測 (掃描線 高數 二分)(藍橋杯)

荒島探測 (掃描線 高數 二分)(藍橋杯)

試題 歷屆試題 荒島探測【第十一屆】【省賽】【A組】
     
資源限制
記憶體限制:256.0MB   C/C++時間限制:1.0s   Java時間限制:3.0s   Python時間限制:5.0s
問題描述
科學家小藍來到了一個荒島,準備對這個荒島進行探測考察。

小藍使用了一個超聲定位裝置來對自己進行定位。為了使用這個裝置,小藍需要在不同的點分別安裝一個固定的發射器和一個固定的接收器。小藍手中還有一個移動裝置。定位裝置需要從發射器發射一個訊號到移動裝置,移動裝置收到後馬上轉發,最後由接收器接收,根據這些裝置之間傳遞的時間差就能計算出移動裝置距離發射器和接收器的兩個距離,從而實現定位。

小藍在兩個位置已經安裝了發射器和接收器,其中發射器安裝在座標 ,接收器安裝在座標 。小藍的發射器和接收器可能在島上,也可能不在島上。

小藍的定位裝置設計有些缺陷,當發射器到移動裝置的距離加上移動裝置到接收器的距離之和大於  時,定位裝置工作不正常。當和小於等於  時,定位裝置工作正常。為了安全,小藍只在定位裝置工作正常的區域探測考察。

已知荒島是一個三角形,三個頂點的座標分別為 , , 。

請計算,小藍在荒島上可以探測到的面積有多大?

輸入格式
輸入的第一行包含五個整數,分別為 , , , , 。

第二行包含六個整數,分別為 , , , , , 。

輸出格式
輸出一行,包含一個實數,四捨五入保留  位小數,表示答案。

考慮到計算中的誤差,只要你的輸出與參考輸出相差不超過  即可得分。

樣例輸入
10 6 4 12 12 0 2 13 2 13 15 Data 樣例輸出 39.99 Data 樣例說明 荒島的形狀和定位裝置工作正常的區域如下圖所示,藍色的三角形表示荒島,紅色的曲線圍成的區域為定位裝置工作正常的區域。 island.png 當輸出為 、 或 時可以得分。 評測用例規模與約定 對於所有評測用例,保證發射器的兩個座標不同,, , 。
View problem

思路: 利用一條平行y軸的掃描線, 分別掃描 三角形和橢圓的重疊部分,就行拉。

            但是由於橢圓的方程比較難求,直接 利用直線和三角形的交點 y值 去 二分這個y 看那個y滿足就行了。

            時間複雜度 n(logn) n=10^6;