HDU 5017 Ellipsoid 模拟退火第一题
为了补这题,特意学了下模拟退火算法,感觉算法本身不是很难,就是可能降温系数,步长等参数不好设置。
具体学习可以参见: http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html 我认为讲的很不错,通俗易懂。
这题设置一个step为1,降温系数为0.99,因为系数越大,得到最优解的概率越大,虽然可能会慢一点。因为是三维的,所以往八个方向扩展找邻域解,然后遇到比他优的解一定接受。
代码:(参照网上代码)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#define Mod 1000000007
#define eps 1e-8
using namespace std; int dx[] = {,,,-,,-,,-};
int dy[] = {,-,,,,,-,-};
double a,b,c,d,e,f; double dis(double x,double y,double z)
{
return sqrt(x*x + y*y + z*z);
} double calc(double x,double y)
{
double A = c;
double B = d*y+e*x;
double C = f*x*y + a*x*x + b*y*y - 1.0;
double delta = B*B-4.0*A*C;
if(delta < 0.0) return Mod+10.0; //不在椭球上
delta = sqrt(delta);
double soz1 = (-B + delta)/(2.0*A);
double soz2 = (-B - delta)/(2.0*A);
if(dis(x,y,soz1) < dis(x,y,soz2))
return soz1;
return soz2;
} double Simulated_Annealing()
{
double x = ,y = ,z = sqrt(1.0/c); //当前最优解
double step = 1.0, rate = 0.99;
while(step > eps)
{
for(int k=;k<;k++)
{
double kx = x + step*dx[k];
double ky = y + step*dy[k];
double kz = calc(kx,ky);
if(kz >= Mod) continue;
if(dis(kx,ky,kz) < dis(x,y,z))
{
x = kx,y = ky,z = kz;
}
}
step *= rate;
}
return dis(x,y,z);
} int main()
{
while(scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&e,&f)!=EOF)
{
printf("%.7f\n",Simulated_Annealing());
}
return ;
}
HDU 5017 Ellipsoid 模拟退火第一题的更多相关文章
- HDU - 5017 Ellipsoid(模拟退火法)
Problem Description Given a 3-dimension ellipsoid(椭球面) your task is to find the minimal distance bet ...
- HDU - 5017 Ellipsoid(模拟退火)
题意 给一个三维椭球面,求球面上距离原点最近的点.输出这个距离. 题解 模拟退火. 把\(z = f(x, y)\)函数写出来,这样通过随机抖动\(x\)和\(y\)坐标就能求出\(z\). 代码 / ...
- hdu 5017 Ellipsoid(西安网络赛 1011)
Ellipsoid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- HDU 2717 宽搜第一题、
题意:求n到k的最小路径, n有三种变法 n+1,n-1或者2*n: 贴个广搜的模版在这里把.... 总结一下:一般涉及到求最短路的话用宽搜 #include<iostream> #in ...
- HDU 1312 Red and Black 第一题搜索!
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 5017 模拟退火算法
hdu 5017 http://blog.csdn.net/mypsq/article/details/39340601 #include <cstdio> #include <cs ...
- 2018年多校第三场第一题 A. Ascending Rating hdu6319
比赛地址:http://acm.hdu.edu.cn/contests/contest_show.php?cid=804 题目编号:第一题 A. Ascending Rating hdu6319 题 ...
- [算法 笔记]2014年去哪儿网 开发笔试(续)第一题BUG修正
上一篇的blog地址为:http://www.cnblogs.com/life91/p/3313868.html 这几天又参加了一个家公司的笔试题,在最后的编程题中竟然出现了去哪儿网开发的第一题,也就 ...
- 《学习OpenCV》练习题第五章第一题ab
这道题是载入一幅带有有趣纹理的图像并用不同的模板(窗口,核)大小做高斯模糊(高斯平滑),然后比较用5*5大小的窗口平滑图像两次和用11*11大小的窗口平滑图像一次是否接近相同. 先说下我的做法,a部分 ...
随机推荐
- java四大域总结
最近学完了web部分,发现有些地方总是单个容易理解,可是把所有的放在一起来大杂烩,总是有那么几个知识点容易混淆.其实网上的资料已经够多了,虽然也不乏辛劳的搬运工.可是最终的目的不就是要我们自身理解吗? ...
- PHP学习笔记:对命名空间(namespace)学习资料的翻译
Name collisions means: you create a function named db_connect, and somebody elses code that you use ...
- mvc5入门示例博客(有惊喜)
因为一直做pc客户端,总感觉要被社会淘汰一样,近来时间又有空闲,索性学习一下asp.net mvc开发,试着追赶互联网的潮流. 话说在软件开发中,最费力的还是界面上,太多细节要关注了,从今年起便努力将 ...
- 你可以使用 play framework 做5件很爽的事情http://www.anool.net/?p=629
1.绑定HTTP参数到JAVA方法里的参数. 使用PLAY可以很简单的从JAVA代码中检索HTTP参数.只要把方法参数申明成和HTTP参数相同既可. 比如,这个request: Http代码 /art ...
- OAUTH 协议介绍
OAUTH 产生背景 随着互联网的深入发展,一些互联网巨头积累了海量的用户和数据.对于平台级软件厂商来说,用户的需求多种多样,变化万千 以一己之力予以充分满足,难免疲于本命.因此将数据以接口的形式开放 ...
- 转:Web App开发入门
WebApp与Native App有何区别呢? Native App: 1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C. 2.更新体验较差.同时也比较麻烦.每一次发布 ...
- 桥牌笔记 Skill Level 4 C7 小心将吃
南主打5H. 看来问题不大,但要小心南的方块AK会阻塞桥路. 如果方块3-2分布,并且将牌也3-2分布,就很容易. 如果红桃4-1分布,那是死定了. 如果方块4-1分布,还有希望完成的! 为了防止东家 ...
- 上传Android代码到Jcenter(解决了字符映射的问题)
请先阅读:http://blog.saymagic.cn/2015/02/16/release-library-to-jcenter.html 最外面的build.gradle // Top-leve ...
- 安卓开发_深入学习ViewPager控件
一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...
- Servlet开发配置
本文主要简单实践一下servlet开发相关开发 1.Servlet的创建 两种方法: 创建普通的java类,继承自HttpServlet类,在通过手动配置web.xml文件注册Servlet对象,比较 ...