poj 1379 模擬退火

2021-05-27 14:33:40 字數 890 閱讀 1220

/*

題意:給定n個點和範圍,在範圍內找到乙個點,使得n個點到這個點的最小距離最大

模擬退火法

模擬退火的過程

1 找到這些點所在的範圍,用兩個點框定(**中e1,e2兩個點)

2 在這個範圍內生成num個點(num自定)

3 對於每個生成的點i,在其周圍生成num個點,一旦有點優於i,則替換。

4 縮小範圍d,若d《精度,退出,否則執行 3

5 遍歷所有num個點,找到val的最大值

*/#include #include #include #include #include #include #include #include #include#includeusing namespace std;

const int num=20;

const int rad=1000;

struct point

point(double _x,double _y):x(_x),y(_y){}

}p[10001],may[num],e1,e2;

int n;

double x,y;

double dis(point a,point b)

double judge(point t)//評價函式,得到點t的評價值val

} d*=0.9;

} point ans;

ans.val=0;

for(int i=0;ians.val)

ans=may[i];

printf("the safest point is (%.1f, %.1f).\n",ans.x,ans.y);

}int main()

solve(max(y,x));

}}

poj1379 模擬退火

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

POJ 1379 模擬退火

模擬退火演算法,很久之前就寫過一篇文章了。雙倍經驗題 poj 2420 題意 在乙個矩形區域內,求乙個點的距離到所有點的距離最短的那個,最大。這個題意,很像二分定義,但是毫無思路,也不能暴力列舉,那就模擬退火。參考著名的acdream,哈哈,有個共同點,那就是,大部分的 都沒有做接受準則,這也許是a...

POJ 1379(模擬退火)

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