星星還是樹 模擬退火)

2021-10-21 17:44:41 字數 1280 閱讀 2727

link

在二維平面上有 n 個點,第 i 個點的座標為 (xi

,yi)

(x_i,y_i)

(xi​,y

i​)。

請你找出乙個點,使得該點到這 n 個點的距離之和最小。

該點可以選擇在平面中的任意位置,甚至與這 n 個點的位置重合。

輸入格式

第一行包含乙個整數 n。

接下來 n 行,每行包含兩個整數 xi,yi,表示其中乙個點的位置座標。

輸出格式

輸出最小距離和,答案四捨五入取整。

資料範圍

1 ≤n

≤100

1≤n≤100

1≤n≤10

0,0 ≤x

i,yi

≤10000

0≤xi,yi≤10000

0≤xi,y

i≤10

000輸入樣例:

4

0 00 10000

10000 10000

10000 0

輸出樣例:

思路:

模擬退火模板題

細節見於**

#include

using

namespace std;

#define x first

#define y second

typedef pair<

double

,double

> pdd;

const

int n =

110;

int n;

pdd q[n]

;double ans =

1e8;

double

rand

(double l,

double r)

double

get_dist

(pdd a, pdd b)

double

calc

(pdd p)

ans =

min(ans, res)

;return res;

}void

simulate_anneal()

// 模擬退火

}int

main()

printf

("%.0lf\n"

, ans)

;return0;

}

模擬退火演算法

w 模擬退火演算法的基本思想 將乙個優化問題比擬成乙個金屬物體,將優化問題的目標函式比擬成物體的能量,問題的解比擬成物體的狀態,問題的最優解比擬成能量最低的狀態,然後模擬金屬物體的退火過程,從乙個足夠高的溫度開始,逐漸降低溫度,使物體分子從高能量狀態緩慢的過渡到低能量狀態,直至獲得能量最小的理想狀態...

模擬退火合集

首次接觸模擬退火 看來還是挺神奇的。主要參考這篇博文 題意判斷多邊形內部能否容納乙個半徑為r的圓,即在有限的平面內找最優範圍。遺傳演算法的結果難以掌控,爬山演算法又沒法保證跳出區域性最優,所以基於貪心原則的模擬退火演算法還是值得考慮的。然後就是設定每次變化的步長和演化方式。該題可以從每條邊的中點開始...

模擬退火演算法

一些求解極值的問題不能通過函式特性直接求解,只能暴力列舉,但是單純的列舉效率不高,通過模擬退火演算法可以高效的找到答案。學習好博文 最小圓覆蓋 hdu 3007 buried memory 大意 給出一些點,求出能覆蓋他們的最小的圓。輸出圓心和半徑 include include include i...