埋もれた記憶シミュレーテッドアニーリング

それぞれの人が彼または彼女はこの当時をしたとき、彼または彼女のgrowth.Butと一緒に愚かな何かを持っていた、彼らはこの事は間違いであることを予測することができませんでしたし、彼らはこの事がかなり起こっていないでしょうになるでしょう。
世界の王Sconbinは、nightmare.ItがDufeinに彼の愛の手紙は、彼のdream.These愚かな手紙で公衆が彼のthrone.Sconbinを破壊することを決め台無しかもしれ行われたことが判明した1によりswakened、Sconbinは眠っていた、exception.Oneの日ではありません軍事演習のopportunity.Theミサイルによって文字が最高のミサイルの実行をweapon.Consideredで、Sconbinは最小の破壊で1基のミサイルを使用することにしました。
SconbinがDufeinにN文字を書かれていた、彼女は難しいことで場所を持って別のplaces.Sconbin上でこれらの文字を埋め、彼は最高の場所は、ミサイル、およびバースト領域の最小半径を起動している場所を知りたいです。さんが賞を得るためにSconbinを支援しましょう。

多くのテストcases.EachケースはN letters.Eachの座標を与えるN行に続く行に正の整数N(N <500、^ V ^、我々の偉大な王思いやりの恋人であるかもしれない)から構成されていることは2を持っているInputThere座標数字は、X座標とY coordinate.N = 0は、3つの数字を含む、出力において単一の行がなければならないそれぞれの場合file.OutputFor入力の端部である第一及び第二あり、xとのミサイルのy座標打ち上げは、第三は、ミサイルが小数点以下第二桁に四捨五入されているすべてのN letters.All出力番号を破壊する必要最小半径です。
サンプル入力

3 
1.00 1.00 
2.00 2.00 
3.00 3.00 
0

サンプル出力

2.00 2.00 1.41 

アイデア:あなたは半径がその方向答える更新を続けることができるかどうかを確認するために見上げセンターを列挙


コードを:
//
の#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
int型のn;
#define maxnn 1000は
 二重X [maxnn]、Y [maxnn]。
ダブルデルタ= 0.98 ;
ダブル T = 1 ダブル EPS = 1E- 9 ダブル DIST(ダブル X1、ダブル Y1、ダブル X2、ダブルY2)
{ 
    戻り SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1- Y2))。
} 
ボイドのinit()
{ 
    memsetの(X、0sizeof (X)); 
    memsetの(Y、0はsizeof (Y))。
} 
ボイドTUI()
{ 
    ダブル T = 100 ダブル ANS = 100000000 ;
    二重 SX = Xを[ 1 ]。
    二重 SY = Y [ 1 ]。
    ダブル nowx = 0 ;
    ダブルノヴィ= 0 ;
    一方、(T> EPS)
    { 
            ダブル今= 0 ダブル nowxの=のSX;
            ダブルノヴィ= SY;
            int型の PAL = 0 ;
            int型 iは= 1 ; iが<= N; iが++ 
            { 
                場合(現在< DIST(X [i]は、Y [i]は、nowx、ノヴィ))
                {  = MAX(今、DIST(X [i]は、 Y [i]は、nowx、ノヴィ))。
                    PAL = I; 
                } 
            } 
            もし(現在< ANS)
            { 
                ANS = 今。
            } 
            SX + = T *(X [PAL] -nowx)/(DIST(nowx、ノヴィ、X [PAL]、Y [PAL]))。
            SY + = T×(Y [PAL] -nowy)/ (DIST(nowx、ノヴィ、X [PAL]、Y [PAL]))。//朝着一个方向移动
        T * = デルタ; 
    } 
    のprintf(" %.2f%.2f%.2f \ n " 、SX、SY、ANS)。
} 
int型のmain()
{ 
    一方(CIN >> N)
    { 
        場合(N == 0 戻り 0 ; 
        その中に(); 
        以下のためにint型 i = 1 ; iが<= N; iは++ 
        { 
            scanf関数(" %のLFの%のLF "、・X [i]は、&Y [I])。    
        } 
        TUI()。
    } 
 }

 

おすすめ

転載: www.cnblogs.com/OIEREDSION/p/11290434.html