1. /*
  2. 题意:给n个电脑,求一个点到这n个电脑的距离和最小。
  3. 模拟退火法:和poj1379的方法类似
  4. 因为坐标范围是0-10000
  5. 不妨把它看成是10000*10000的正方形来做
  6. */
  7. #include<stdio.h>
  8. #include<math.h>
  9. #include<iostream>
  10. #include<algorithm>
  11. #define inf 10000000000000
  12. using namespace std;
  13. #define N 110
  14. #define eps 0.1
  15. #define pi acos(-1.0)
  16. struct node {
  17. double x,y,dis;
  18. }f[N],ff[N];
  19. int n;
  20. double dd,x,y;
  21. double diss(double x,double y) {
  22. double sum=0;
  23. int i;
  24. for(i=1;i<=n;i++)
  25. sum=sum+sqrt((x-f[i].x)*(x-f[i].x)+(y-f[i].y)*(y-f[i].y));
  26. return sum;
  27. }
  28. void slove() {
  29. int i,j;
  30. double xx,yy;
  31. for(i=1;i<=20;i++) {
  32. ff[i].x=rand()%10000*1.0+1;
  33. ff[i].y=rand()%10000*1.0+1;
  34. ff[i].dis=diss(ff[i].x,ff[i].y);
  35. }
  36. double T=10000.0*sqrt(2.0);
  37. double rate=0.9;
  38. while(T>eps) {
  39. for(i=1;i<=20;i++)
  40. for(j=1;j<=30;j++) {
  41. double ran=(rand()%1000+1)/1000.0*pi*10;
  42. xx=ff[i].x+cos(ran)*T;
  43. yy=ff[i].y+sin(ran)*T;
  44. double dis=diss(xx,yy);
  45. if(xx<0.0||xx>10000.0||yy<0.0||yy>10000.0)continue;
  46. if(dis<ff[i].dis)
  47. ff[i].dis=dis;
  48. }
  49. T*=rate;
  50. }
  51. dd=inf;
  52. for(i=1;i<=20;i++){
  53. if(dd>ff[i].dis)
  54. dd=ff[i].dis;
  55. }
  56. return ;
  57. }
  58. int main() {
  59. int i;
  60. while(scanf("%d",&n)!=EOF) {
  61. x=inf;
  62. y=-1;
  63. for(i=1;i<=n;i++)
  64. scanf("%lf%lf",&f[i].x,&f[i].y);
  65. slove();
  66. printf("%.0f\n",dd);
  67. }
  68. return 0;
  69. }

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. bzoj 2199: [Usaco2011 Jan]奶牛议会【2-SAT】

    好久没写2-SAT了啊,还以为是网络流 设点x为选,x'为不选,因为一头牛至少要满足一个条件,所以对于牛条件的两个点,选了一个不符合的点,就要选另一个符合的点,这样连两条边 然后枚举所有议案的选和不选 ...

  2. CSS左侧固定右侧自适应

    方法一: float + margin.left{ float: left; width: 100px; }.right {margin-left:100px; } /*清除浮动*/ .contain ...

  3. mysql5.7 1055

    错误提示: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggreg ...

  4. [C和指针] 4-语句、5-操作符和表达式

    第4章 语句 4.1 表达式语句 C并不存在专门的"赋值语句",赋值就是一种操作,就像加法和减法一样,所以赋值就在表达式内进行. 你只要在表达式后面加上一个分号,就可以把表达式转变 ...

  5. mybatis之多个对象自动装配问题

    因为业务的需要,所以我在一个方法中植入三个对象,但是mybatis并没有自动装配,结果并不是我想的那么美好,还是报错了.报错截图如下: <select id="GetOneBillPa ...

  6. asp.net ajax get post 中文乱码解决办法

    前台: var username = $("#UserName").val(); var tel = $("#tel").val(); var yzm = $( ...

  7. 20 如何在C#中存一批数据,数组

    使用软件的一个重要原因,是因为软件可以帮我们重复处理很多事情.在前面我们已经讲到了循环.循环就是为了重复处理一个事情.那么我们有没有想过,我们要重复处理的一批数据怎么在程序里存放呢? 举个例子吧. 我 ...

  8. 如何删除sublime目录

    左侧栏的sublime目录一直删不掉,删除列直接变成了灰色. 今天才发现应该选择文件夹右击选择工程——从工程中删除文件夹. 这个设计真的很醉,删除这么常用的键还放进了第二层……

  9. CAD从二进流加载数据(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::ReadBinStreamEx 从二进流加载数据,详细说明如下: 参数 说明 IMxDrawBinStream* pBinStream ...

  10. 最高的奖励 - 优先队列&贪心 / 并查集

    题目地址:http://www.51cpc.com/web/problem.php?id=1587 Summarize: 优先队列&贪心: 1. 按价值最高排序,价值相同则按完成时间越晚为先: ...