/*
题意:给n个电脑,求一个点到这n个电脑的距离和最小。
模拟退火法:和poj1379的方法类似
因为坐标范围是0-10000
不妨把它看成是10000*10000的正方形来做
*/
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#define inf 10000000000000
using namespace std;
#define N 110
#define eps 0.1
#define pi acos(-1.0)
struct node {
double x,y,dis;
}f[N],ff[N];
int n;
double dd,x,y;
double diss(double x,double y) {
double sum=0;
int i;
for(i=1;i<=n;i++)
sum=sum+sqrt((x-f[i].x)*(x-f[i].x)+(y-f[i].y)*(y-f[i].y));
return sum;
}
void slove() {
int i,j;
double xx,yy;
for(i=1;i<=20;i++) {
ff[i].x=rand()%10000*1.0+1;
ff[i].y=rand()%10000*1.0+1;
ff[i].dis=diss(ff[i].x,ff[i].y);
}
double T=10000.0*sqrt(2.0);
double rate=0.9;
while(T>eps) {
for(i=1;i<=20;i++)
for(j=1;j<=30;j++) {
double ran=(rand()%1000+1)/1000.0*pi*10;
xx=ff[i].x+cos(ran)*T;
yy=ff[i].y+sin(ran)*T;
double dis=diss(xx,yy);
if(xx<0.0||xx>10000.0||yy<0.0||yy>10000.0)continue;
if(dis<ff[i].dis)
ff[i].dis=dis;
}
T*=rate;
}
dd=inf;
for(i=1;i<=20;i++){
if(dd>ff[i].dis)
dd=ff[i].dis;
}
return ;
}
int main() {
int i;
while(scanf("%d",&n)!=EOF) {
x=inf;
y=-1;
for(i=1;i<=n;i++)
scanf("%lf%lf",&f[i].x,&f[i].y);
slove();
printf("%.0f\n",dd);
}
return 0;
}

poj 2420 模拟退火法基础的更多相关文章

  1. poj 2420(模拟退火)

    A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6066   Accepted: 285 ...

  2. POJ 1379 模拟退火

    模拟退火算法,很久之前就写过一篇文章了.双倍经验题(POJ 2420) 题意: 在一个矩形区域内,求一个点的距离到所有点的距离最短的那个,最大. 这个题意,很像二分定义,但是毫无思路,也不能暴力枚举, ...

  3. Python运维开发基础06-语法基础【转】

    上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...

  4. Python运维开发基础05-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...

  5. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  6. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  7. Python运维开发基础02-语法基础【转】

    上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...

  8. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

  9. python3--算法基础:二维数组转90度

    python3--算法基础:二维数组转90度 [0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3] 二维数组转90度 [0, 0, 0, 0][1, 1, ...

随机推荐

  1. 关于Anaconda环境变量配置遇到的一些情况说明

    安装和配置环境变量的话就不多说了,大家可以参照这个说的去做就行 https://blog.csdn.net/weixin_42997646/article/details/89414769 验证配置环 ...

  2. Rabbitmq笔记一

    几个基本概念 Producer 生产者,发送消息的一方,图中左侧的client. Consumer 消费者,接收消息的一方,图中后侧的client. Broker 消息中间件的服务节点,一般一个Rab ...

  3. 一张图带你了解-常见面试之JUC包详解

    面试时经常问到JUC包下的类及特性,现在用一张图总结下

  4. spring 嵌套事务问题

    嵌套事物总结 事物成功总结 1.内外都无try Catch的时候,外部异常,全部回滚. 2.内外都无try Catch的时候,内部异常,全部回滚. 3.外部有try Catch时候,内部异常,全部回滚 ...

  5. 解决:org.springframework.tuple.spel.TuplePropertyAccessor

    原来运行调试正常的项目,今天启动时报“java.lang.IllegalStateException: ApplicationEventMulticaster not initialized”错误.从 ...

  6. c++自动导出lua绑定

    cocos 使用bindings-generator脚本代替了toLua++. 编写效率大大提高. 具体的在本机中分享:http://note.youdao.com/noteshare?id=0f41 ...

  7. .Net MVC 前台验证跟后台验证

    前台验证: 首先你得有一个参数类,参数类代码如下 验证标记总结 [DisplayName("邮箱:")]        [Required(ErrorMessage = " ...

  8. 使用_CRTDBG_LEAK_CHECK_DF检查VC程序的内存泄漏(转)

    我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏.例如: class CMyApp : public CWinApp{public:BOOL InitApplicat ...

  9. [ SPOJ RESTACK ] Restacking haybales

    \(\\\) Description 给出一个环,每个位置有一个初值 \(A_i\),有一个目标值 \(B_i\),保证 \(\sum A_i=\sum B_i\) 每个位置只能把值分给隔壁的,每次分 ...

  10. Centos 开机自动联网

    默认情况下,Centos不是自动连接上网的,要点击右上角有个电脑图标,选择system eth0进行连接, 可以修改开机启动配置只需修改:/etc/sysconfig/network-scripts/ ...