poj 2420 模拟退火法基础
/*
题意:给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 模拟退火法基础的更多相关文章
- poj 2420(模拟退火)
A Star not a Tree? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6066 Accepted: 285 ...
- POJ 1379 模拟退火
模拟退火算法,很久之前就写过一篇文章了.双倍经验题(POJ 2420) 题意: 在一个矩形区域内,求一个点的距离到所有点的距离最短的那个,最大. 这个题意,很像二分定义,但是毫无思路,也不能暴力枚举, ...
- Python运维开发基础06-语法基础【转】
上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...
- Python运维开发基础05-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...
- Python运维开发基础04-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...
- Python运维开发基础03-语法基础 【转】
上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...
- Python运维开发基础02-语法基础【转】
上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...
- Python运维开发基础01-语法基础【转】
开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...
- 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, ...
随机推荐
- 关于Anaconda环境变量配置遇到的一些情况说明
安装和配置环境变量的话就不多说了,大家可以参照这个说的去做就行 https://blog.csdn.net/weixin_42997646/article/details/89414769 验证配置环 ...
- Rabbitmq笔记一
几个基本概念 Producer 生产者,发送消息的一方,图中左侧的client. Consumer 消费者,接收消息的一方,图中后侧的client. Broker 消息中间件的服务节点,一般一个Rab ...
- 一张图带你了解-常见面试之JUC包详解
面试时经常问到JUC包下的类及特性,现在用一张图总结下
- spring 嵌套事务问题
嵌套事物总结 事物成功总结 1.内外都无try Catch的时候,外部异常,全部回滚. 2.内外都无try Catch的时候,内部异常,全部回滚. 3.外部有try Catch时候,内部异常,全部回滚 ...
- 解决:org.springframework.tuple.spel.TuplePropertyAccessor
原来运行调试正常的项目,今天启动时报“java.lang.IllegalStateException: ApplicationEventMulticaster not initialized”错误.从 ...
- c++自动导出lua绑定
cocos 使用bindings-generator脚本代替了toLua++. 编写效率大大提高. 具体的在本机中分享:http://note.youdao.com/noteshare?id=0f41 ...
- .Net MVC 前台验证跟后台验证
前台验证: 首先你得有一个参数类,参数类代码如下 验证标记总结 [DisplayName("邮箱:")] [Required(ErrorMessage = " ...
- 使用_CRTDBG_LEAK_CHECK_DF检查VC程序的内存泄漏(转)
我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏.例如: class CMyApp : public CWinApp{public:BOOL InitApplicat ...
- [ SPOJ RESTACK ] Restacking haybales
\(\\\) Description 给出一个环,每个位置有一个初值 \(A_i\),有一个目标值 \(B_i\),保证 \(\sum A_i=\sum B_i\) 每个位置只能把值分给隔壁的,每次分 ...
- Centos 开机自动联网
默认情况下,Centos不是自动连接上网的,要点击右上角有个电脑图标,选择system eth0进行连接, 可以修改开机启动配置只需修改:/etc/sysconfig/network-scripts/ ...