【POJ】【2420】A Star not a Tree?
模拟退火
Orz HZWER
这题的题意是在二维平面内找一点,使得这点到给定的n个点的距离和最小……0.0
模拟退火算法请戳这里
//POJ 2420
#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
int getint(){
int v=,sign=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') sign=-; ch=getchar();}
while(isdigit(ch)) {v=v*+ch-''; ch=getchar();}
return v*sign;
}
/*******************template********************/
int n;
double x,y,ans,t;
struct point{double x,y;} p[]; double dis(double x,double y,point p){
return sqrt( (p.x-x)*(p.x-x)+(p.y-y)*(p.y-y) );
}
double getsum(double x,double y){
double temp=;
F(i,,n) temp+=dis(x,y,p[i]);
return temp;
}
int main(){
srand(time());
while(scanf("%d",&n)!=EOF){
x=y=; ans=1e20; t=1e5;
F(i,,n){
scanf("%lf%lf",&p[i].x,&p[i].y);
x+=p[i].x; y+=p[i].y;
}
x/=n; y/=n;
ans=getsum(x,y);//初始解
double tmp,tx,ty;
while(t>0.02){
tx=ty=;
F(i,,n){
tx+=(p[i].x-x)/dis(x,y,p[i]);
ty+=(p[i].y-y)/dis(x,y,p[i]);
}
tmp=getsum(x+tx*t,y+ty*t);
//生成一个新解tmp
if (tmp<ans){
ans=tmp; x+=tx*t; y+=ty*t;
}//接受较优解
else if( log((tmp-ans)/t) < (rand()%)/10000.0 ){
ans=tmp; x+=tx*t; y+=ty*t;
}//一定概率接受较差解 (由于t越来越小,所以接受较差解的概率也越来越小……)
t*=0.9;//“降温”
}
printf("%.0f\n",ans);
}
return ;
}
(带注释)
【POJ】【2420】A Star not a Tree?的更多相关文章
- POJ 2420:A Star not a Tree?
原文链接:https://www.dreamwings.cn/poj2420/2838.html A Star not a Tree? Time Limit: 1000MS Memory Limi ...
- POJ 2420 A Star not a Tree?【爬山法】
题目大意:在二维平面上找出一个点,使它到所有给定点的距离和最小,距离定义为欧氏距离,求这个最小的距离和是多少(结果需要四舍五入)? 思路:如果不能加点,问所有点距离和的最小值那就是经典的MST,如果只 ...
- 【 POJ - 1204 Word Puzzles】(Trie+爆搜|AC自动机)
Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10782 Accepted: 4076 Special ...
- 【POJ 1459 power network】
不可以理解的是,测评站上的0ms是怎么搞出来的. 这一题在建立超级源点和超级汇点后就变得温和可爱了.其实它本身就温和可爱.对比了能够找到的题解: (1)艾德蒙·卡普算法(2)迪尼克算法(3)改进版艾德 ...
- 【POJ 2728 Desert King】
Time Limit: 3000MSMemory Limit: 65536K Total Submissions: 27109Accepted: 7527 Description David the ...
- 【POJ 2976 Dropping tests】
Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 13849Accepted: 4851 Description In a certa ...
- 【POJ 3080 Blue Jeans】
Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 19026Accepted: 8466 Description The Genogr ...
- 【POJ各种模板汇总】(写在逆风省选前)(不断更新中)
1.POJ1258 水水的prim……不过poj上硬是没过,wikioi上的原题却过了 #include<cstring> #include<algorithm> #inclu ...
- 【POJ 3669 Meteor Shower】简单BFS
流星雨撞击地球(平面直角坐标第一象限),问到达安全地带的最少时间. 对于每颗流星雨i,在ti时刻撞击(xi,yi)点,同时导致(xi,yi)和上下左右相邻的点在ti以后的时刻(包括t)不能再经过(被封 ...
随机推荐
- 智捷公开课马上开始了-欢迎大家一起讨论学习-第一系列读《Swift开发指南(修订版) 》看Swift视频教程
引用: 智捷课堂携手51CTO学院.图灵教育联合举办iOS线上培训就业班系列体验公开课. 分享移动开发.移动设计方向最新,最热,最抢眼技术热点以及设计经验.我们每周将最少举办一次公开课,同时会提前安排 ...
- AMQ学习笔记 - 20. 使用Apache ActiveMQBrowser监控ActiveMQ
概述 Apache ActiveMQBrowser可以用于查看AMQ中的消息.这里对其使用方法进行简单介绍. 使用介绍 1.下载并解压缩 下载地址:Apache ActiveMQBrowser,当前最 ...
- [javascript|基本概念|Number]学习笔记
Number类型的值:整数/浮点数值 整数 十进制 e.g.: var intNum = 50; 八进制 (严格模式下无效,解析错误)字面值首位必须是0,之后的数字序列为0-7 e.g.: va ...
- Qt学习总结-ui篇
控件设置透明度: QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect(this); effect->setOpacity(0. ...
- Win8 URI 方案 ms-appX 用法大全
ms-appdata://可以引用来自应用的本地.漫游和临时数据文件夹中的应用文件ms-appdata:///local/hello/logo.png ms-appx://可以引用来自应用包的应用文件 ...
- 《CDN web加速代理》RHEL6
CDN加速代理环境的测试:192.168.1.这个网段是可以上网的,2网段不可以上网 一台apache服务器 :配置 只安装apche服务 IP 192.168.1.59 一台双网卡的服务器 :只安装 ...
- js设计模式(5)---外观模式
0.前言 早上好,今天天气不错,估计有35度吧,坐在空调室里相当惬意,那么酒足饭饱之后就应该干些正事了. 1. 为什么使用外观模式 外观模式提供了一个高层接口,封装一些复杂操作或繁琐行为,方便调用.门 ...
- jQuery EasyUI 数据网格 - 启用行内编辑(转自http://www.runoob.com/jeasyui/jeasyui-datagrid-datagrid12.html)
可编辑的功能是最近添加到数据网格(datagrid)的.它可以使用户添加一个新行到数据网格(datagrid).用户也可以更新一个或多个行.本教程向您展示如何创建一个数据网格(datagrid)和内联 ...
- CDH JPS 出现没有名字的进程
jps 时出现没有名字的进程 或者process information unavailable 把服务关掉,执行一下 rm -rf /tmp/hsperfdata_* 再重启就好了.
- Linux 下常用的压缩,解压方法
压缩命令: tar.gz 格式: tar -zcvf 自定义压缩文件名.tar.gz 被压缩文件名 zip 格式: zip -r 自定义压缩文件名.zip 被压缩文件名 如果要压缩整个文件夹,也 ...