【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)不能再经过(被封 ...
随机推荐
- jquery设置元素readonly和disabled(checkbox只读)
jquery api中提供了对元素应用disabled和readonly属性的方法:1,readonly 代码示例: $('input').attr("readonly",&quo ...
- jquery $.trim()方法使用介绍
$.trim(str)的作用是去掉字符串首尾空格 $.trim(str) 返回:string: 说明:去掉字符串首尾空格. 示例: 先看个错误代码: <input type="text ...
- 学习笔记:JavaScript传参方式———ECMAScript中所有函数的参数都是按值传递
我们把命名参数(arguments)视为局部变量,在向参数传递基本类型值时,如同基本类型变量的复制一样,传递一个副本,参数在函数内部的改变不会影响外部的基本类型值.如: function add10( ...
- HIV T2
甲学者将HIV病毒的遗传物质彻底水解后得到A.B.C三种化合物,乙学者将组成T2噬菌体的遗传物质彻底水解后得到了A.B.D三种化合物.你认为C.D两种化合物分别指的是 A.尿嘧啶.胸腺嘧啶 B.胸腺嘧 ...
- C++将类的构造函数、析构函数声明为private或者protected的用途
如果将构造函数.析构函数声明为private或者protected,表示不能从类的外部正常调用构造和析构函数了. 这种用法的通常使用的场景如下: 1.如果不想让外面的用户直接构造一个类A的对象,而希望 ...
- Stanford parser学习:LexicalizedParser类分析
上次(http://www.cnblogs.com/stGeekpower/p/3457746.html)主要是对应于javadoc写了下LexicalizedParser类main函数的功能,这次看 ...
- jeecms子栏目或者文章页导航父栏目选中解决方法
jeecms在子栏目或者文章页导航父栏目选中,看例子 <div class="nav"> <ul> [@cms_channel_list ] <li ...
- 感知器算法PLA
for batch&supervised binary classfication,g≈f <=> Eout(g)≥0 achieved through Eout(g)≈Ein(g ...
- AJAX请求和跨域请求详解(原生JS、Jquery)
一.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX = 异步 JavaScript 和 XML,是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数 ...
- Docs list
http://www.deansys.com/doc/ldd3/index.html Github中文文档: http://www.worldhello.net/gotgithub/03-projec ...