/*
題意:給定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...