POJ 1379 模擬退火

2022-04-01 06:39:32 字數 1005 閱讀 2817

模擬退火演算法,很久之前就寫過一篇文章了。雙倍經驗題(poj 2420)

題意:在乙個矩形區域內,求乙個點的距離到所有點的距離最短的那個,最大。

這個題意,很像二分定義,但是毫無思路,也不能暴力列舉,那就模擬退火。

參考著名的acdream,哈哈,有個共同點,那就是,大部分的**,都沒有做接受準則,這也許是acmer對智慧型演算法的不習慣吧~~~

#include #include 

#include

using

namespace

std;

const

int maxn = 1005

;int

x,y,m;

intkase;

struct

node nodes[maxn];

int dx[4] = ;

int dy[4] = ;

double

dist(node a,node b)

double

calc(node p)

intmain()

tmp.x = 0

; tmp.y =y;

anstmp =calc(tmp);

if(anstmp>ans)

tmp.x =x;

tmp.y = 0

; anstmp =calc(tmp);

if(anstmp>ans)

tmp.x =x;

tmp.y =y;

anstmp =calc(tmp);

if(anstmp>ans)

while(t>1e-8

) }

}t = t*0.98

; }

printf(

"the safest point is (%.1f, %.1f).\n

",ansx,ansy);

}return0;

}

poj1379 模擬退火

poj 1379 題意 給定n個點,你需要在給定矩形範圍內找到乙個點,使得它到這n個點的距離的最小值最大。一開始是用的顧研的方法,但總是ac不了,聽盾哥說他那個有問題。正確的演算法流程應該是 初始化 初始溫度de 充分大 初始p個並行解狀態s 演算法迭代的起點 失敗次數上限l,接受引數x,衰變係數k...

poj 1379 模擬退火

題意 給定n個點和範圍,在範圍內找到乙個點,使得n個點到這個點的最小距離最大 模擬退火法 模擬退火的過程 1 找到這些點所在的範圍,用兩個點框定 中e1,e2兩個點 2 在這個範圍內生成num個點 num自定 3 對於每個生成的點i,在其周圍生成num個點,一旦有點優於i,則替換。4 縮小範圍d,若...

POJ 1379(模擬退火)

2015 04 17 23 45 14 題意 給出乙個框內的n個點 地雷 讓你求出乙個到所有點距離最小值最大的位置。隨即1k個點來找,步長為max x,y 縮小係數為0.5 事實上這些值都沒有硬性要求 然後就是直接上模擬退火,注意步長最小值要設為乙個比較小的數已保證精度 比如10 3 1 inclu...