2018年のレースDシミュレーテッドアニーリング南京サイト

トピックリンクします。https://codeforces.com/gym/101981/attachments

あなたはあなたが(距離が限り、あなたは、特定の誤差の範囲内でできる限り、一意ではない)他の都市では、この最小 - 最大距離を作るために座標、および距離の出力調整しようというn個の都市の3次元座標を、提供します。そのための都市の数が少ないとの距離を、単に一定の誤差範囲内で値を決定するために、ビンにシミュレーテッドアニーリングの実行を必要とされていません。

書式#include <iostreamの> 
の#include <アルゴリズム> 
書式#include <cmath>
 使用して 名前空間はstdを、
constの ダブル EPS = 1E- 8 ;
#define INF 0x3f3f3f3f
 int型のn;
構造体ノード{
     ダブルX、Y、Z。
    ノード(){};
    ノード(ダブル X、ダブル Y、ダブルZ):X(X)、Y(y)を、Z(Z){}。
    二重DIS(ノードW)
    {
        戻り SQRT((WX-X)*(X-WX)+(YE-Y)*(O-Y)+(WZ-Z)*(WZのZ))。
    }
} P [ 105 ]。
int型のmain()
{
    scanf関数(" %のD "、&N)
    ダブルX、Y、Z。
    以下のためにint型 i = 1 ; iが<= N; iは++します
    {
        scanf関数(" %LF%LF%LF "、およびX&Y、およびZ)。
        P [I] = ノード(X、Y、Z)。
    }=ノード(000 );
    ダブル T = 20000、D = 0.98 ダブル ANS = infを、RET;
    一方、(T> EPS)
    {
        int型 POS = 1 ;
        以下のためにint型 i = 1 ; iが<= N; iは++します
        {
            もし(a.dis(P [I])> a.dis(P [POS]))POS = I。
        }
        RET = a.dis(P [POS])。
        ANS = 分(ANS、右)。
        AX + =(P [POS] .xa.x)/ RET * T。
        AY + =(P [POS] .ya.y)/ RET * T。
        AZ + =(P [POS] .za.z)/ RET * T。
        T * = D。
    }
    printf(" %.15lfする\ n " 、ANS)。
    リターン 0 ;
}

 

おすすめ

転載: www.cnblogs.com/chen99/p/11670317.html