[模拟退火][UVA10228] A Star not a Tree?
好的,在h^ovny的安利下做了此题
模拟退火中的大水题,想当年联赛的时候都差点打了退火,正解貌似是三分套三分,我记得上一道三分套三分的题我就是退火水过去的...
貌似B班在讲退火这个大玄学...
这题还是比较简单的啦~
随机化坐标x,y就可以啦
然而格式错了n遍.....死的心都有了
最后输出是四舍五入!!!四舍五入!!!四舍五入!!!
两组答案中间有空行!!!有空行!!!有空行!!!
然后只要会退火的板子就可以啦
//LevenKoko
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-')f=-;chr=getchar();}
while(isdigit(chr)) {ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}
int x[],y[],n;
double ansx,ansy,ans;
const double delta=0.998;
inline double DIS(double x1,double x2,double y1,double y2){return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
//欧几里得距离
inline double Get_Ans(double a,double b){double ans=;for(int i=;i<=n;i++)ans+=DIS(x[i],a,y[i],b);return ans;}
//当前坐标答案
inline void Fire(){//退火板子
double T= /**/ ,fx=ansx,fy=ansy;
while(T>1e-){
double tx=T*(rand()*-RAND_MAX)+fx;
double ty=T*(rand()*-RAND_MAX)+fy;//这里调参,乱调就好了(脸白的无所畏惧),但是前面的随机数一定要能够取到负值啊(虽然我没试过不取会不会炸)
double tans=Get_Ans(tx,ty);
double DE=tans-ans;
if(DE<)ans=tans,fx=ansx=tx,fy=ansy=ty;
else if(exp(-DE/T)*RAND_MAX>rand()) fx=tx,fy=ty;
T*=delta;
}
}
int main(){
int T=read();
while(T--){
n=read();
for(int i=;i<=n;i++) x[i]=read(),y[i]=read();
ansx=ansy=;ans=Get_Ans(,);
for(int i=;i<=;i++) Fire();
cout<<(int)(ans+0.5);
if(T) puts("");puts("");
}
return ;
}
[模拟退火][UVA10228] A Star not a Tree?的更多相关文章
- 模拟退火算法A Star not a Tree?(poj2420)
http://write.blog.csdn.net/postedit A Star not a Tree? Time Limit: 1000MS Memory Limit: 65536K Tot ...
- UVA10228 A Star not a Tree?
[返回模拟退火略解] 题目描述 一平面上有 nnn 个点 {Ai}\{A_i\}{Ai},求一个点 XXX 使得σ=∑i=1ndis(Ai,X)\sigma=\sum_{i=1}^{n}{dis(A ...
- 【题解】UVA10228 A Star not a Tree?
题面传送门 解决思路 本题数据范围较小,可以使用模拟退火算法(随机化). 顾名思义,模拟退火就是一个类似于降温的过程.先设置一个较大的初温,每次随机改变状态,若使答案更优,则采取更优答案,否则根据其与 ...
- uva 10228 - Star not a Tree?(模拟退火)
题目链接:uva 10228 - Star not a Tree? 题目大意:给定若干个点,求费马点(距离全部点的距离和最小的点) 解题思路:模拟退火算法,每次向周围尝试性的移动步长,假设发现更长处, ...
- poj2420 A Star not a Tree? 找费马点 模拟退火
题目传送门 题目大意: 给出100个二维平面上的点,让你找到一个新的点,使这个点到其他所有点的距离总和最小. 思路: 模拟退火模板题,我也不懂为什么,而且一个很有意思的点,就是初始点如果是按照我的代码 ...
- poj-2420 A Star not a Tree?(模拟退火算法)
题目链接: A Star not a Tree? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5219 Accepte ...
- [POJ 2420] A Star not a Tree?
A Star not a Tree? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4058 Accepted: 200 ...
- POJ 2420 A Star not a Tree? (计算几何-费马点)
A Star not a Tree? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3435 Accepted: 172 ...
- pojA Star not a Tree?
题目链接 pojA Star not a Tree? 题解 啊,模拟退火是个好东西 模拟退火即可 代码 #include<cmath> #include<cstdio> #in ...
随机推荐
- Feign远程调用源码阅读
- How to SSH Into Your iPhone
First, I will explain what SSH is and why we do it. SSH (Secure Shell) allows you to exchange data b ...
- c++ 枚举简单举例
#include <iostream> enum Enumeration{ VAL1, VAL2, VAL3=100, VAL4 }; int main() { using namespa ...
- [转]C++的Json解析库:jsoncpp和boost
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的j ...
- js 事件驱动原理
还记得当初学JAVA-GUI编程时学习过事件监听机制,此时再学习JavaScript中的事件驱动机制,不免简单.当初学习时也是画过原理图,所以从原理图开始吧! js是采用事件驱动(event-driv ...
- 17-Ubuntu-文件和目录命令-切换目录-相对路径和绝对路径
1.相对路径: 在输入路径时,最前面不是/或者~,表示相对当前目录所在的目录位置. 例:当前桌面目录下,通过相对路径切换到桌面目录下的Entertainment目录 2.绝对路径: 在输入路径时,最前 ...
- 配置Spring Security 错误:Property or field 'ROLE_USER' cannot be found
在学习http://www.mkyong.com/spring-security/spring-security-hello-world-example/时,出现以下错误: Property or f ...
- Spark中的各种action算子操作(java版)
在我看来,Spark编程中的action算子的作用就像一个触发器,用来触发之前的transformation算子.transformation操作具有懒加载的特性,你定义完操作之后并不会立即加载,只有 ...
- 关于webpack一些路径
好多新手对webpack中的路径一直感到迷茫,其实再学习webpack之前都应该去了解下nodejs的内容, 以为webpack就是个nodejs项目,所以里面涉及到的路径都是nodejs里面的写法 ...
- PHP算法之整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 ...