hdu 5017 Ellipsoid 模擬退火

2021-08-21 06:31:23 字數 1018 閱讀 5398

[hdu 5017 ellipsoid]

給定乙個三維空間的橢球面方程,求橢球面上的點到原點(0,0,0)的最小距離。

可以發現,橢球面上到原點的距離,具有乙個極大值點和乙個極小值點。

用模擬退火的方法可以近似搜尋到全域性最小。

這裡因為只有乙個極小值點,所以這裡也不需要以一定概率接受比當前更差的解了。可以說是簡化的模擬退火了。

一定程度上來說,模擬退火理論上可以近似替代二分、三分了。

#include 

#include

#include

#include

#include

#include

#include

using

namespace

std;

double a, b, c, d, e, f;

const

int psz = 10;

const

int inf = 0x3f3f3f3f;

const

long

long infl = 0x3f3f3f3f3f3f3f3f;

const

double pi = acos(-1.0);

const

double eps = 1e-8;

const

int dir_sz = 8;

struct point pt[psz];

double get_dis(double x, double y)

return ret;

}int main()

while(t > eps) }}

t *= r;

++ cnt;

}//cout << cnt << endl;

cout

<< fixed << setprecision(7) << res << endl;

}return

0;}

guojiasheng,模擬退火,

HDU 5017 模擬退火

一步一步慢慢學習 模擬退火 好 include include include include include using namespace std const int n 30 5 double a,b,c,d,e,f double dist double x,double y,double z...

hdu 5017 模擬退火求最值

題意 給乙個橢圓 然後求原點到這個橢圓距離最小的點的距離是多少。解析 依舊用模擬退火。修改了乙個地方,初始溫度從100改到了1,就行了。之前的也修改了。選z的時候,選離遠點近的那個點就行了。pragma comment linker,stack 1677721600 include include ...

P5017 擺渡車 題解

p5017 擺渡車 這道題的做法很多,我考慮用斜率優化的方法來做 先定義 f i 表示運走 i 時間之前的人,並且必須在 i 這個時間發車的最小代價 很顯然 f i min f j sum i i t k 我們考慮用乙個類似字首和的東西預處理出 sum i i t k 用 g i 記錄 i 時間前有...