当前位置: 首页 > news >正文

1344 线型网络

1344 线型网络

链接

 

分析

  先写了个爬山,一直不过,然后调整变量的初始范围,不断调整,终于终于终于A了9个点,然后在调了一下,最后过了。。。爬山求的要次数尽量多一些。

  然后又写了模拟退火,调整了初始范围。模拟退火,求的次数可以不用太多,它会有一定的几率跳到不优的点。

 

爬山

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<cctype>
 7 
 8 using namespace std;
 9 
10 const int N = 25;
11 
12 struct Node{
13     double x,y;
14 }d[N];
15 int p[N],n;
16 double dis[N][N];
17 
18 double calcc() {
19     double ret = 0;
20     for (int i=1; i<n; ++i) 
21         ret += dis[p[i]][p[i+1]];
22     return ret;
23 }
24 double solve() {
25     double T = 1000000;
26     for (int i=1; i<=n; ++i) p[i] = i;
27     double ans = calcc();
28     while (T >= 0.001) {
29         int x = rand() % n + 1,y = rand() % n + 1;
30         swap(p[x],p[y]);
31         double tmp = calcc();
32         if (tmp < ans) ans = tmp;
33         else swap(p[x],p[y]);
34         T *= 0.96;
35     }
36     return ans;
37 }
38 int main() {
39 
40     srand(19970815);
41     scanf("%d",&n);
42     for (int i=1; i<=n; ++i) 
43         scanf("%lf%lf",&d[i].x,&d[i].y);
44     for (int i=1; i<=n; ++i) 
45         for (int j=i+1; j<=n; ++j) 
46             dis[i][j] = dis[j][i] = sqrt((d[i].x-d[j].x)*(d[i].x-d[j].x)+(d[i].y-d[j].y)*(d[i].y-d[j].y));
47     solve();
48     double ans = 1e18;
49     for (int i=1; i<=20000; ++i) ans = min(ans,solve());
50     printf("%.2lf",ans);
51     return 0;
52 }
View Code

 

模拟退火

还没过。。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/mjtcn/p/9126222.html

相关文章:

  • 关于mysql严格模式的开启、关闭
  • Jenkins自动化CI CD流水线之5--pipeline
  • 在博客园写了一年博客,收获的不仅仅是写作技能——我能一直保持积极的学习和工作态度...
  • luogu1556 幸福的路
  • Win10安装MySQL5.7.22 解压缩版(手动配置)方法
  • Java将图片转换成Base64字符串
  • MyBatis原理-拦截器
  • Django项目 第一课 【nvm、node、npm安装及使用】
  • 牛客网暑期ACM多校训练营(第三场) H Diff-prime Pairs(欧拉筛法)
  • CF 1036 B Diagonal Walking v.2 —— 思路
  • 系统完整性检查工具--Tripwire和AIDE
  • tp5 路由定义
  • 随机图片
  • Vue框架的两种使用方式
  • WPF的x:名称空间
  • [译]如何构建服务器端web组件,为何要构建?
  • 【mysql】环境安装、服务启动、密码设置
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Java面向对象及其三大特征
  • JS数组方法汇总
  • Python 反序列化安全问题(二)
  • SpiderData 2019年2月25日 DApp数据排行榜
  • unity如何实现一个固定宽度的orthagraphic相机
  • 读懂package.json -- 依赖管理
  • 记录:CentOS7.2配置LNMP环境记录
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 排序(1):冒泡排序
  • 如何设计一个比特币钱包服务
  • 数据仓库的几种建模方法
  • 数组大概知多少
  • 详解NodeJs流之一
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Hibernate主键生成策略及选择
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #FPGA(基础知识)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (03)光刻——半导体电路的绘制
  • (1)(1.9) MSP (version 4.2)
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)MFC+openGL单文档框架glFrame
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (转)jdk与jre的区别
  • (转)关于多人操作数据的处理策略
  • **python多态
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net FrameWork简介,数组,枚举
  • .NET MVC第三章、三种传值方式
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性