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, ...
随机推荐
- bzoj 2199: [Usaco2011 Jan]奶牛议会【2-SAT】
好久没写2-SAT了啊,还以为是网络流 设点x为选,x'为不选,因为一头牛至少要满足一个条件,所以对于牛条件的两个点,选了一个不符合的点,就要选另一个符合的点,这样连两条边 然后枚举所有议案的选和不选 ...
- CSS左侧固定右侧自适应
方法一: float + margin.left{ float: left; width: 100px; }.right {margin-left:100px; } /*清除浮动*/ .contain ...
- mysql5.7 1055
错误提示: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggreg ...
- [C和指针] 4-语句、5-操作符和表达式
第4章 语句 4.1 表达式语句 C并不存在专门的"赋值语句",赋值就是一种操作,就像加法和减法一样,所以赋值就在表达式内进行. 你只要在表达式后面加上一个分号,就可以把表达式转变 ...
- mybatis之多个对象自动装配问题
因为业务的需要,所以我在一个方法中植入三个对象,但是mybatis并没有自动装配,结果并不是我想的那么美好,还是报错了.报错截图如下: <select id="GetOneBillPa ...
- asp.net ajax get post 中文乱码解决办法
前台: var username = $("#UserName").val(); var tel = $("#tel").val(); var yzm = $( ...
- 20 如何在C#中存一批数据,数组
使用软件的一个重要原因,是因为软件可以帮我们重复处理很多事情.在前面我们已经讲到了循环.循环就是为了重复处理一个事情.那么我们有没有想过,我们要重复处理的一批数据怎么在程序里存放呢? 举个例子吧. 我 ...
- 如何删除sublime目录
左侧栏的sublime目录一直删不掉,删除列直接变成了灰色. 今天才发现应该选择文件夹右击选择工程——从工程中删除文件夹. 这个设计真的很醉,删除这么常用的键还放进了第二层……
- CAD从二进流加载数据(com接口VB语言)
主要用到函数说明: MxDrawXCustomFunction::ReadBinStreamEx 从二进流加载数据,详细说明如下: 参数 说明 IMxDrawBinStream* pBinStream ...
- 最高的奖励 - 优先队列&贪心 / 并查集
题目地址:http://www.51cpc.com/web/problem.php?id=1587 Summarize: 优先队列&贪心: 1. 按价值最高排序,价值相同则按完成时间越晚为先: ...