[POJ2420 A Star not a Tree?]

[关键字]:随机化搜索 模拟退火

[题目大意]:给出n个点,找出一个距离所有点之和最小的点,输出距离。

//===============================================================================

[分析]:同样是随机化的方法,只是在把没个点随机移动时有小小的变动。poj1379是使用得随机一个角度x然后利用t*cos(x)和t*sin(x)来处理随机走到的位置,而这道题因为没有了边界的限制,可以用以2t为长以要移动的点位中心的正方形中随机一个移动的位置来求最优值。至于具体退火算法步骤可以看poj1379或http://www.clarkok.com/blog/?p=357

//================================================================================

[代码]:

View Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;

const int NUM=20;
const int TUM=20;
const int RD=1000;
const int MAXN=150;
const double ZERO=0.1;
const double det=0.7;

struct node
{
double x,y,dat;
}a[MAXN],MIN,MAX,b[MAXN];
int n;
double ans;

double dis(node c)
{
double sum=0;
for (int i=1;i<=n;++i)
sum+=sqrt((a[i].x-c.x)*(a[i].x-c.x)+(a[i].y-c.y)*(a[i].y-c.y));
return sum;
}

double random()
{
double sum=(rand()%(RD+1))*(1.0/RD);
return sum;
}

node GET(node x,node y)
{
node c;
//printf("%lf %lf %lf",x.x,y.x,y.x-x.x);
//system("pause");
c.x=x.x+(y.x-x.x)*random(),c.y=x.y+(y.y-x.y)*random();
//printf("%lf %lf\n",c.x,c.y);
//system("pause");
c.dat=dis(c);
return c;
}

bool Init()
{
if (scanf("%d",&n)==EOF) return 0;
MIN.x=MIN.y=100000;
MAX.x=MAX.y=-100000;
for (int i=1;i<=n;++i)
{
scanf("%lf%lf",&a[i].x,&a[i].y);
if (a[i].x<MIN.x) MIN.x=a[i].x;if (a[i].y<MIN.y) MIN.y=a[i].y;
if (a[i].x>MAX.x) MAX.x=a[i].x;if (a[i].y>MAX.y) MAX.y=a[i].y;
}
for (int i=1;i<=NUM;++i) b[i]=GET(MIN,MAX);//,printf("%lf %lf %lf\n",b[i].x,b[i].y,b[i].dat);
//printf("%lf %lf %lf %lf\n",MIN.x,MIN.y,MAX.x,MAX.y);
return 1;
}

void Solve(double T)
{
node t,x,y;
for (double i=T;i>=ZERO;i*=det)
for (int j=1;j<=NUM;++j)
for (int k=1;k<=TUM;++k)
{
x.x=b[j].x-i,x.y=b[j].y-i;
y.x=b[j].x+i,y.y=b[j].y+i;
t=GET(x,y);
//printf("%lf %lf %lf %lf %lf\n",x.x,x.y,y.x,y.y,i);
if (t.dat<b[j].dat) b[j]=t;
}
ans=1e10;
for (int i=1;i<=NUM;++i)
{
if (ans>b[i].dat) ans=b[i].dat;
//printf("%lf\n",b[i].dat);
}
printf("%.0lf\n",ans);
}

int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
while (Init()) Solve(max(MAX.x-MIN.x,MAX.y-MIN.y));
return 0;
}



转载于:https://www.cnblogs.com/procedure2012/archive/2012/03/28/2420816.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐:iReaper - MSDN中文Webcast下载程序

看MS的webcast还真是麻烦,我混了这么久,都没搞清楚,这东西在MS那里怎么看的.老是想看,但不知道怎么进去看.但用这个小软件下载看,就很方便.http://myron.cnblogs.com/ 转载于:https://www.cnblogs.com/shiningrise/archive/2008/06/15/1222270.html

前端常用正则

手机号正则 const phoneReg/^1[3456789]\d{9}$/; 邮编正则 const emailReg/^[0-9]{6}$/; 整数正则&#xff08;大于0&#xff09; const zsReg/^(([1-9]\d)|[1-9])?$/; 小数点后保留2位 const limitReg/(^[1-9]([0-9])?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])…

JavaScript URL参数读取

* 用法&#xff1a; * var args getArgs( ); // 从 URL 解析出参数 * var q args.q || ""; // 如果定义了某参数&#xff0c;则使用其值&#xff0c;否则给它一个默认值 * var n args.n ? parseInt(args.n) : 10; */ var getArgs function () { var args new O…

移动wabAPP 开发 viewport 注意事项

我们在开发移动设备的网站时&#xff0c;最常见的的一个动作就是把下面这个东西复制到我们的head标签中&#xff1a; <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0">http://wenzhixin.net.…

关于QTP 9.2对象库管理的一些总结

QTP 9.2增强了对于对象库的编辑功能&#xff0c;改进了8.2版本中饱受用户诟病的&#xff0c;对于对象库编辑功能不够强大的缺 点。 比如1&#xff09;在新增“Object Repository Manager”中整合了原8.2版本中以插件形式提供的merge功能&#xff0c;方便用户 更加便捷的管理好对…

三目运算符

在js中使用三目运算符能够很大程度上提高代码的&#xff0c;简洁度&#xff0c;但是三目运算符对于js功底不够深厚的同学来说&#xff0c;又实在有些费解和难以记忆&#xff0c;在此简单的做个备忘。 三元运算符的表达式&#xff1a; (expression1) ? (expression2) : (ex…

[团队开发]总结下Server 2008 + TeamFoundation Server 2008安装过程

这段时间公司平台迁移&#xff0c;VS都换成2008的了&#xff0c;原来用的是RUBY的那个管理&#xff0c;换成了现在VSTS项目管理。 所有就下了 TeamFoundation Server 2008 来安装了。 花一个月才搞明白&#xff0c;期间尝试过4次安装都失败了&#xff0c;最后还是成功了 安装SE…

linux0.11学习笔记-技术铺垫-简单AB任务切换程序(1)-实现一个简单的bootloader

直接看代码&#xff0c;即使已经理解了代码&#xff0c;但是还是会有种没有学到手的感觉.真正的掌握来自实践&#xff0c;来自己动手做出来.“简单AB任务切换程序”系列文章的目的是&#xff0c;在bochs下&#xff0c;实践出简单AB两个任务的切换. 1. bochs安装或者编译参考 Ub…

使用file做swap分区

有时候在给系统盘分区时&#xff0c;忘记swap分区&#xff0c;这种情况下&#xff0c;可以用一个文件做swap&#xff0c;效果差不多的。这里就以2Gswap分区为例。步骤&#xff1a;1、创建2G大小的文件dd if/dev/zero of/swap bs1M count20482、格式化swap filemkswap /swap3、把…

MoinMoin Wiki 1.7优化与维护经验

CWoW Developer Group(CWDG)从2006年开始在一直使用 MoinMoinWiki 来构建一个魔兽世界游戏插件开发技术知识库, 这2年中wiki的版本也从1.5变更到了1.7. moin1.6是一个变化最大的版本, 连不少wiki语法都改变了, 最显著的莫过于内连接的语法原先是["xxx"]现在与mediaw…

react和vue配置本地代理

React 在react中配置开发环境下的本地代理相对比较简单&#xff0c;直接在package.json文件中修改即可。 但是这样做有其局限性&#xff0c;如果开发中代理多个接口的时候将无法满足需求&#xff0c;我们需要的是下面这种的能够代理多个接口的请求方式 proxy(/back, {target: h…

php异步处理,执行系统命令

为什么80%的码农都做不了架构师&#xff1f;>>> 难点1&#xff1a;php执行系统命令&#xff0c;要等到命令执行完成之后才会结束&#xff0c;不然会造成整个php进程挂起&#xff0c;其他php服务僵死&#xff1f; 难点2&#xff1a;php执行的命令完成后&#xff0c;…

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误解决办法...

错误如下&#xff0c;不知道是不是遇到鬼了&#xff0c;之前好好的&#xff0c;装了myeclipse以后出错了&#xff08;说实话&#xff0c;myeclipse用的很不爽&#xff0c;感觉netbeans更好用些&#xff09; HTTP Status 500 -type Exception reportmessagedescription The serv…

axios取消功能的设计与实现

取消功能的设计与实现 #需求分析 有些场景下&#xff0c;我们希望能主动取消请求&#xff0c;比如常见的搜索框案例&#xff0c;在用户输入过程中&#xff0c;搜索框的内容也在不断变化&#xff0c;正常情况每次变化我们都应该向服务端发送一次请求。但是当用户输入过快的时候&…

为搜索引擎做准备

1、 允许搜索机器人搜索站内所有链接。如果你想某些页面不被搜索&#xff0c;推荐采用robots.txt方法<meta content"all" name"robots" />2、 设置站点作者信息<meta name"author" content"ajienetease.com,阿捷" />3…

hibernate中的Annotation补充

下面使用Annotation来定义一个实体类&#xff1a; Entity Table(name"person_table") //不是引入org.hibernate.persistence&#xff0c;因为这个只可以在hibernate环境下使用 public class Person …

axios拦截器的实现

拦截器设计与实现 #需求分析 我们希望能对请求的发送和响应做拦截&#xff0c;也就是在发送请求之前和接收到响应之后做一些额外逻辑。 我们希望设计的拦截器的使用方式如下&#xff1a; // 添加一个请求拦截器 axios.interceptors.request.use(function (config) { // 在发送请…

What can Lines3D Class do?

好几天没来Bolg了&#xff0c;这几天在尝试用3D线条做一个比较优雅的线条效果。文字由3DMAX导出到AS类&#xff0c;其他曲线路径由TweenMax的bezier数组定义。 Preview:niuniuzhu.cn 转载于:https://www.cnblogs.com/niuniuzhu/archive/2008/07/25/1251556.html

10 个最佳的网站分析方法

一个网页设计师在设计网站的各个关键方面时&#xff0c;他们需要了解网站的各种必要细节&#xff0c;可通过市场调研或者是网站本身的统计来获取这些细节信息。 本文介绍的这些工具确实可以帮助网站进行适当和有效的分析。这里面有些是免费的工具&#xff0c;还有的提供非常强大…

C#表达式树浅析

一、前言 在我们日常开发中Lamba 表达式经常会使用&#xff0c;如List.Where(n>Name"abc") 使用起来非常的方便&#xff0c;代码也很简洁&#xff0c;总之一个字就是“爽”。在之前我们总是用硬编码的方式去实现一些底层方法&#xff0c;比如我要查询用户“abc”是…