博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5017 Ellipsoid 模拟退火
阅读量:5729 次
发布时间:2019-06-18

本文共 1078 字,大约阅读时间需要 3 分钟。

说是找椭球面上的 到原点距离最近的点。

感觉像是有个单调性,然后,点的范围是正负100以内。

第一次学习模拟退火,觉得就是个搜索,在现在确定的一个方向中去搜索。当然,方向越多搜索越精确,但是时间会变慢,这种概率算法还是不要轻易写的为好......

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;double a,b,c,d,e,f,speed=0.99,nx,ny,nz;double eps=1e-8;double dd[8][2]={ { 1,0},{-1,0},{ 0,1},{ 0,-1},{ 1,-1},{ 1,1},{-1,1},{-1,-1}};double dis(double a,double b,double c){ return sqrt(a*a+b*b+c*c);}double getnz(double x,double y){ double A=c; double B=(e*x+d*y); double C=a*x*x+b*y*y+f*x*y-1; double det=B*B-4*A*C; if (det<0) return 0x7f7f7f7f; double p=(sqrt(det)-B)/2.0/A,q=(-sqrt(det)-B)/2.0/A; if (p*p>q*q) return q; else return p;}void solve(){ double step=1; nx=0; ny=0; nz=getnz(nx,ny); while (step>eps) { for (int i=0;i<8;i++) { double tx=nx+dd[i][0]*step; double ty=ny+dd[i][1]*step; double tz=getnz(tx,ty); if (tz==0x7f7f7f7f) continue; if (dis(tx,ty,tz)

 

转载于:https://www.cnblogs.com/nj-czy/p/5703035.html

你可能感兴趣的文章
我的友情链接
查看>>
VesPrep 1.0 Alpha 封装辅助工具
查看>>
python实现2个文件对比
查看>>
利用Packet Tracer模拟器搭建小型企业局域网实验
查看>>
OSSEC中文使用手册
查看>>
我的友情链接
查看>>
【java.sql.Date】没有时分秒
查看>>
8B/10B
查看>>
ASP.NET 4 和 Visual Studio 2010 Web 开发概述 2 - AJAX
查看>>
AIX浅析lsdev、lsattr、lscfg
查看>>
centos 系统优化
查看>>
Android -- 重写android返回键
查看>>
Selenium IDE 进阶部分-UI-Element
查看>>
Windows 8.1 轻量接触接触方式部署(三)
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
ios开发之字体样式设置大全
查看>>
js 自执行函数 函数内部通过函数名调用本身没有问题而函数外部调用报错’未定义错误‘...
查看>>
redis命令处理量
查看>>
从尾到头打印单链表
查看>>