POJ 2420解题报告
来源:互联网 发布:怎么取消淘宝网店 编辑:程序博客网 时间:2024/05/21 23:34
好吧。这道题最大的收获是发现模拟退火算法好简单啊。还是很容易写出来的。这道题我看大牛们用的是牛顿近似解或者模拟退火算法。
可以移步这里:http://blog.sina.com.cn/s/blog_64675f540100sehz.html
提交到POJ后WA,于是自己的程序改得越来越像上面链接中的程序了。于是不贴代码了。收获是最终发现错误还是出在逻辑上面,自己有个变量没注意,导致虽然能过样例点,但是过不了测试点。所以下次在出现这种情况还是要检查程序,不要太关注那些很诡异的地方。比如输出时printf("%lf\n", f)中有没有l等。
这道题用一个candidates[Nr]的数组不断逼近最优解。
生成过程如下:
首先,求出所有的点的坐标的最大范围,记为T,在这个范围内生成Nr个随机点。我看到有直接用输入点作为起始点的,在这个测试数据下也可以通过。
然后,对这Nr个随机点,每次再随机产生Nr(或别的数目)个随机点,如果生成的随机点的更逼近最优点(即距离和最小),则用新的随机点代替之前的。每次生成随机点的范围为该点T*belta以内(belta在0~1之间)。也就是说范围T每次缩小为原来的0.8(或别的数值)。
循环结束的条件是T小于最小的粒度,比如0.1或是随机点有特别接近最优点的。
大致思路如此,写起来其实也很简单,不要有畏难情绪就好。wikipedia上有模拟退火算法的挺清楚的描述:http://en.wikipedia.org/wiki/Simulated_annealing
最后感慨一句。早这样写POJ程序估计我早成大牛或是资深码农了。唉。
- POJ 2420解题报告
- POJ 2420 模拟退火 解题报告
- poj数百篇解题报告
- poj 1141解题报告
- poj 1001解题报告
- poj 1011 解题报告
- poj 1087 解题报告
- poj 2153解题报告
- poj 2051解题报告
- POJ 1167 解题报告
- poj 1026 解题报告
- POJ 1077 解题报告
- POJ 1042 解题报告
- POJ 1095 解题报告
- POJ 1159解题报告
- poj 2312解题报告
- POJ 1001解题报告
- POJ 1002解题报告
- 知所以然
- Your time is limited
- 爱上安静、沉默,习惯了一个人
- 数学之美番外篇:快排为什么那样快
- Interface eth0 checked failed
- POJ 2420解题报告
- import server uses ZHS16GBK character set (possible charset conversion)
- Java面试宝典2013版
- 八句话
- 项目时间管理
- IOS开发网络篇之──ASIHTTPRequest详解
- 算法为啥子那么难呢???俺为啥子要学算法慎??
- STL — — map
- 如果我们分手了:伤感日志