【題目連結】hdu 6097
【題意】有一個圓心在原點的圓,給定圓的半徑,給定P、Q兩點坐标(PO=QO,P、Q不在圓外),取圓上一點D,求PD+QD的最小值。
【樣例】
Sample Input
4
4
4 0
0 4
4
0 3
3 0
4
0 2
2 0
4
0 1
1 0
Sample Output
5.6568543
5.6568543
5.8945030
6.7359174
【分析】
不總是中垂線上的點取到最小值,考慮點在圓上的極端情況。
做P點關于圓的反演點P',OPD與ODP'相似,相似比是|OP| : r。
Q點同理。
極小化PD+QD可以轉化為極小化P'D+Q'D。
當P'Q'與圓有交點時,答案為兩點距離,否則最優值在中垂線上取到。
時間複雜度 O(1)。
>畫了兩種情況的圖,如下:

>二維上反演以一個特定的反演圓為基礎:圓心O為反演中心,圓半徑為常數k,把點P反演為點P'就是使得OP×OP'=k^2。
如點P在圓外可這樣作:過點P作圓的切線(兩條),兩個切點相連與OP連線交點就是點P'。
如點P在圓内就把這一過程反過來即可:連結OP,過點P作直線垂直于OP,直線與圓的交點處的切線與OP延長線的交點就是點P'。
如點P在圓上,反演後仍是它自身。
【代碼】待補。