2015-09-08 52 views
-2

請看這個問題。UVa 12921(Triple Shots Help)

鏈接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=862&page=show_problem&problem=4800

我一直在試圖從幾個星期前解決這個問題幾何。但每次失敗。我的方法來解決這個問題是---

由於3點是在相同的距離,只是意味着我們將在結果中發現的點將是一個圓的中心,其半徑是這三點明顯的距離。設3個點爲(x1,y1,x2,y2,x3,y3)。所以,我們可以寫,

(x1 - H)^2 + (y1 - K)^2 = (x2 - H)^2 + (y2 - K)^2 
=> (x1^2 + y1^2 -x2^2 -y2^2) - 2H(x1-x2) - 2K(y1-y2) = 0 
=> A - 2HX1 - 2KY1 = 0 ------ (i) 

(x2 - H)^2 + (y2 - K)^2 = (x3 - H)^2 + (y3 - K)^2 
=> (x2^2 + y2^2 -x3^2 -y3^2) - 2H(x2-x3) - 2K(y2-y3) = 0 
=> B - 2HX2 - 2KY2 = 0 ------- (ii) 

,然後我們可以求解以下列方式這兩公式:

所以,

A - 2HX1 - ((B - 2HX2)/Y2) * Y1 = 0 [ Putting the value of 2K from eqn (ii) ] 
=> H = (AY2 - BY1)/(2 * (X1Y2 - X2Y1)) ----- (iii) 
And, 
=> K = (B - 2HX2)/2Y2 ----- (iv) 

現在,如果這些點是以前共線則我將打印「不可能」。但如果不是的話,我們會做上述的計算。如果(H,K)與這3個點(x1,y1,x2,y2,x3,y3)的距離相同,則打印(H,K)將打印「不可能」。

我的方法是否正確(我的代碼給所有測試的答案「不可能」)?如果不是那麼爲什麼?給我一些想法,我該如何解決它?提前致謝 。

+1

我投票結束這個問題作爲題外話,因爲它似乎不是一個實用的編程相關的問題,如[幫助/在話題]中所述。 – usr2564301

+0

當用戶嘗試了很多,但沒有找到如何解決問題......然後他從這種類型的網站找到幫助。如果他們找到他們的幫助,他們會非常高興。但是,你們的主持人們正在展示你們的力量,結束他們...然後用戶失去了希望尋求幫助..因爲他們總是處於受驚的心境,因爲他們的主題會關閉,否則他們會得到這個職位的負面評價。雖然他們將不能發佈任何問題的大量負面評級......真的你是主持人是偉大的@Jongware – azaxnoot

+0

等距離三個給定的點意味着你的船是在這三個點的外接圓的中心,這這意味着你只需要交叉兩個垂直平分線。你的公式看起來要複雜得多。到目前爲止,還沒有任何與此有關的程序設計相關,所以關閉題目似乎是合適的。如果你在尋找外心的公式時遇到任何嚴重的問題,你可以在[Math SE](http://math.stackexchange.com/)上提問,但要確保你以更可讀的方式格式化你的TeX數學格式)。 – MvG

回答

0

你的方法有點複雜。

圓的一般形式是 x^2 + y^2 + Dx + Ey + F = 0。 以這種方式,您可以避免變量的平方。

給定3分,你可以解決D,E和F代替x和y的那些點。 (F係數始終爲1,所以你可以解決d和E快速使用Cramer's rule,減去其他一個公式。)

當你d & E,該中心的座標爲(-D/2, -E/2)。 (所以你可以在最後一步忽略F)。注意,當D或E是無限的,那麼就不可能爲這種情況找到一箇中心。