hdu5017 Ellipsoid (模拟退火)】的更多相关文章

Ellipsoid 原题链接 题目描述 给定.一个要满足的椭球的方程\(ax^2+by^2+cz^2+dyz+exz+fxy=1\) 求球面上一个点到原点\((0,0,0)\)的距离最小. 有多组输入数据 解题思路 这题有一个麻烦的地方: 如何求满足椭球方程的点! 那就只能用自己浅薄的知识:求根公式. 我们先随机x坐标和y坐标,再带入到方程中,用求根公式算出z坐标. 这样就能保证所扩展的新状态一定满足条件. 之后的更新就和普通的模拟退火一样了. 具体求根方法,按照程序来看吧.反正就是移个项之后带…
---恢复内容开始--- Description Given a 3-dimension ellipsoid(椭球面) your task is to find the minimal distance between the original point (0,0,0) and points on the ellipsoid. The distance between two points (x 1,y 1,z 1) and (x 2,y 2,z 2) is defined as    Inp…
为了补这题,特意学了下模拟退火算法,感觉算法本身不是很难,就是可能降温系数,步长等参数不好设置. 具体学习可以参见: http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html  我认为讲的很不错,通俗易懂. 这题设置一个step为1,降温系数为0.99,因为系数越大,得到最优解的概率越大,虽然可能会慢一点.因为是三维的,所以往八个方向扩展找邻域解,然后遇到比他优的解一定接受. 代码:(参照网上代码) #include <iostre…
比赛的时候跳进这个大坑里,最后代码是写出来了.看到好像很多都是模拟退火做的,下面提供一个奇怪的思路吧. ax^2+by^2+cz^2+dyz+exz+fxy=1(*) 通过一些奇特的YY我们可以知道这是由一个标准的椭球ax^2+by^2+cz^2=1旋转得到的,之所以有交叉项是因为绕了X,Y,Z轴旋转,所以我们的想法是要是能将这个椭球旋回去那么就可以知道最短的距离了. 首先我们是旋转z轴,希望使得xy项消掉,这个时候令z=0可以得到  ax^2+by^2+fxy=1 通过一些椭圆的旋转知识我们可…
Problem Description Given a 3-dimension ellipsoid(椭球面) your task is to find the minimal distance between the original point (0,0,0) and points on the ellipsoid. The distance between two points (x1,y1,z1) and (x2,y2,z2) is defined as    Input There ar…
Ellipsoid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 648    Accepted Submission(s): 194 Special Judge Problem Description Given a 3-dimension ellipsoid(椭球面) your task is to find the minima…
题意 给一个三维椭球面,求球面上距离原点最近的点.输出这个距离. 题解 模拟退火. 把\(z = f(x, y)\)函数写出来,这样通过随机抖动\(x\)和\(y\)坐标就能求出\(z\). 代码 //#include <bits/stdc++.h> #include <cstdio> #include <cmath> #include <ctime> #include <algorithm> #include <iostream>…
Ellipsoid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 850    Accepted Submission(s): 271 Special Judge Problem Description Given a 3-dimension ellipsoid(椭球面) your task is to find the minima…
第一次尝试模拟退火..... Ellipsoid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 916    Accepted Submission(s): 305 Special Judge Problem Description Given a 3-dimension ellipsoid(椭球面) your task is to…
看题意就是一道数学物理题,带权费马点   --这怎么是数学了,这也是物理的 所以要用物理方法,比如FFF 国际著名oi选手miaom曾说 模拟退火初温可以低,但是最好烧个几千次 国际著名物理课代表+1曾说 miaom说什么都对 但是我瞎捣鼓了一波烧了一次不但A了还过了样例(不要说我递进的顺序不对),真是神奇 #include<bits/stdc++.h> #define MAXN 10000 #define EPS 1e-9 using namespace std; ],n,p,q; doub…