题目:http://acm.hdu.edu.cn/showproblem.php?pid=3932

注意平均值与最远的点距离为0的情况。所以初值设成-1,这样 id 就不会乱。不过设成0也可以。注意判断 pr==0 ,因为有除法。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<ctime>
#include<cmath>
#include<cstdlib>
#define db double
using namespace std;
const int N=;
const db dc=0.99,eps=1e-,INF=2e4;
int n,nx[N],ny[N],pid;
db ans,px,py;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return fx?ret:-ret;
}
db dis(db x0,db y0,db x1,db y1)
{
return sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1));
}
void SA(db T)
{
db x0=px,y0=py,pr=ans;int id=pid;
while(T>eps)
{
pr=;
for(int i=;i<=n;i++)
{
db tmp=dis(x0,y0,nx[i],ny[i]);
if(tmp>pr)pr=tmp,id=i;
}
if(pr<ans)ans=pr,pid=id,px=x0,py=y0;
if(!pr)return;
x0=x0+(nx[id]-x0)/pr*T; y0=y0+(ny[id]-y0)/pr*T;
T*=dc;
}
}
int main()
{
srand(time());
int tx,ty;
while(scanf("%d%d%d",&tx,&ty,&n)==)
{
for(int i=;i<=n;i++)nx[i]=rdn(),ny[i]=rdn(),px+=nx[i],py+=ny[i];
px/=n; py/=n; ans=INF;
SA();SA();
printf("(%.1lf,%.1lf).\n%.1lf\n",px,py,ans);
}
return ;
}

hdu 3932 Groundhog Build Home——模拟退火的更多相关文章

  1. hdu 3932 Groundhog Build Home —— 模拟退火

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3932 找一个位置使距离最远的点的距离最小: 上模拟退火: 每次向距离最远的点移动,注意判断一下距离最远的点 ...

  2. hdu 3932 Groundhog Build Home

    Groundhog Build Home Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  3. HDU 3932 Groundhog Build Home 【基础模拟退火】

    和刚才那道是一模一样 不过求的是最小的,只要稍微修改一下就可以了~ //#pragma comment(linker, "/STACK:16777216") //for c++ C ...

  4. hdu 2215 & hdu 3932(最小覆盖圆)

    Maple trees Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. Groundhog Build Home - HDU - 3932(模拟退火)

    题意 给定一个矩形内的\(n\)个点,在矩形中找一个点,离其他点的最大距离最小. 题解 模拟退火. 这个题需要\(x\)和\(y\)坐标随机动的时候多随机几次.否则就WA了.另外由于随机多次,如果温度 ...

  6. HDU 3932 模拟退火

    HDU3932 题目大意:给定一堆点,找到一个点的位置使这个点到所有点中的最大距离最小 简单的模拟退火即可 #include <iostream> #include <cstdio& ...

  7. HDU 3932

    http://acm.hdu.edu.cn/showproblem.php?pid=3932 一定范围的平面上给一些点,求到这些点的最大距离最小,和上一题的题意正好相反,稍微改一下就可以 这个问题又叫 ...

  8. 【2017 Multi-University Training Contest - Team 7 && hdu 6121】Build a tree

    [链接]点击打开链接 [题意] 询问n个点的完全k叉树,所有子树节点个数的异或总和为多少. [题解] 考虑如下的一棵k=3叉树,假设这棵树恰好有n个节点. 因为满的k叉树,第i层的节点个数为k^(i- ...

  9. hdu 5017 模拟退火/三分求椭圆上离圆心最近的点的距离

    http://acm.hdu.edu.cn/showproblem.php?pid=5017 求椭圆上离圆心最近的点的距离. 模拟退火和三分套三分都能解决 #include <cstdio> ...

随机推荐

  1. mini2440移植uboot 2014.04(五)

    代码上传到github上:https://github.com/qiaoyuguo/u-boot-2014.04-mini2440 前几篇博文: <mini2440移植uboot 2014.04 ...

  2. INSPIRED启示录 读书笔记 - 第32章 提防有特殊要求的产品

    产品需求不能用户说了算 1.在看到具体的产品之前,用户很难知道自己需要什么 2.用户不知道什么样的产品是可行的(在目前的技术条件下可以实现) 3.用户之间缺少沟通,需求很难统一 怎样回避特例产品可能带 ...

  3. Android内核开发:理解和掌握repo工具【转】

    本文转载自:http://ticktick.blog.51cto.com/823160/1653304 由于Android源码是用repo工具来管理的,因此,搞Android内核开发,首先要搞清楚re ...

  4. windows环境下安装部署并启用zkui的web图形界面

    在此之前的工作:不是本机部署的三个服务器最为伪集群的zookeeper环境,并将三个为服务启动起来. 然后才有了下面的工作. 1. 首先,zkui项目地址:https://github.com/Dee ...

  5. Windows batch: call more than one command in a FOR loop?

    https://stackoverflow.com/questions/2252979/windows-batch-call-more-than-one-command-in-a-for-loop U ...

  6. Android在layout xml中使用ViewStub完成动态加载

    Android在layout xml中使用ViewStub完成动态加载 一.Layout XML文件常见的两种模块加载方式 1.静态加载:被加载的模块和其它模块加载的时间一样. <include ...

  7. 报表研究之工具篇-VBA

    最近一直在研究VBA,写报表的工作.将所得的知识,经验总结一下,与大家分享. 工具篇,VBA 1.EXCEL一个最好用的功能就是录制宏,当一个函数拿不准要怎么写,用什么函数表示的时候,录制就帮了大忙了 ...

  8. 浅谈如何优化SQL Server服务器

      在中国,使用SQLServer数据库的用户和企业是最多的,那么如何去设计和优化SQLSerer服务器呢,DBA应该遵循那些准则和方法呢,下面就将我的经验与大家分享,希望对大家有所帮助. AD:   ...

  9. WPF绑定数据源之RelativeSource

    Command="{Binding ConfirmRegisterCommand}" CommandParameter="{Binding RelativeSource= ...

  10. QBXT Day 4 数学,数论

    今天讲一讲数论吧(虽然清明讲过了) 进制转换 我们来看10这个数怎么转换成k进制 因为10=2^3+2^1,所以10就是1010 三进制也同理10=3^2+3^0,所以就是101 我们对于一个10进制 ...