CodeVS 1344 线型网络

Sol

随机化算法+哈密顿路径.

好厉害的题...首先都会想到状压DP对吧,复杂度 \(O(n^2 2^n)\) .

\(n=20\)  exm?? \(10^8\)

有一种算法就是随机化算法 再调整.

通过随机化算法,再 \(O(n^2)\) 来调整.

调整方式如下:

如果有 \(dis(i-1,i)+dis(j,j+1)>dis(i-1,j)+dis(i,j+1)\)

那么就将区间 \([i,j]\) 翻转...

非常神奇吧 关于证明原文中并没有,总之这样会导致很多不同的方案收束到同一方案,造成方案数的减少,来以随机概率获得正确结果.

PS:简直就是骗分神奇的方法...

原文链接:http://www.doc88.com/p-772451936672.html

Code

#include<cstdio>
#include<cmath>
#include<ctime>
#include<utility>
#include<cstdlib>
#include<algorithm>
#include<iostream>
using namespace std;

const int N = 25;
#define mpr(a,b) make_pair(a,b)
#define sqr(x) ((x)*(x))

int n,T;
pair<int,int> p[N];
int a[N];double d[N][N];
double ans=9999999999.0;

inline int in(int x=0,char ch=getchar(),int v=1){
	while(ch!=‘-‘&&(ch>‘9‘||ch<‘0‘)) ch=getchar();if(ch==‘-‘) v=-1,ch=getchar();
	while(ch>=‘0‘&&ch<=‘9‘) x=(x<<3)+(x<<1)+ch-‘0‘,ch=getchar();return x*v; }
double dis(int u,int v){ return sqrt((double)sqr(p[u].first-p[v].first)+sqr(p[u].second-p[v].second)); }
int main(){
	srand(time(0));
	n=in();
	for(int i=1;i<=n;i++) p[i]=mpr(in(),in()),a[i]=i;
	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j]=dis(i,j);

//	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) printf("%.2lf%c",d[i][j]," \n"[j==n]);
//	for(int i=1;i<=n;i++) cout<<p[i].first<<" "<<p[i].second<<endl;

	for(T=2000;T--;){
		random_shuffle(a+1,a+n+1);
		double tmp=0;

//		cout<<"***********"<<endl;
//		for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;

		for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++)
			if(d[a[i-1]][a[i]]+d[a[j]][a[j+1]]>d[a[i-1]][a[j]]+d[a[i]][a[j+1]]) reverse(a+i,a+j+1);
		for(int i=1;i<n;i++) tmp+=d[a[i]][a[i+1]];

//		cout<<"***********"<<endl;
//		for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
//		cout<<"tmp="<<tmp<<endl;

		ans=min(ans,tmp);
	}printf("%.2lf\n",ans);
	return 0;
}

  

时间: 2024-10-05 07:31:47

CodeVS 1344 线型网络的相关文章

NS3网络仿真(6): 总线型网络

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在NS3提供的第一个示例first.py中,模拟了一个点对点的网络,接下来的一个示例代码模拟了一个总线型网络及CSMA协议. # // Default Network Topology # // # // 10.1.1.0 # // n0 -------------- n1 n2 n3 n4 # // point-to-point | | | | # // ================ #

Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1

3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的 129 条东西向街道和 129 条南北向街道所形成的网格状,并且相邻的平行街道之间的距离都是恒定值 1 .东西向街道从北到南依次编号为0,1,2…128,南北向街道从西到东依次编号为 0,1,2…128. 东西向街道和南北向街

线型网络

[题目描述] 有N(N <= 20 )台PC放在机房内,现在要求由你选定一台PC,用共N-1条网线从这台机器开始一台接一台地依次连接他们,最后接到哪个以及连接的顺序也是由你选定的,为了节省材料,网线都拉直.求最少需要一次性购买多长的网线(就是找出N的一个排列P1 P2 P3 ······ PN然后P1-->P2-->P3-->······-->PN找出|P1 P2|+|P2 P3|+······+|PN-1 PN|长度的最小值). [输入描述] 第一行N,下面N行,每行分别为

cogs 线型网络(状压dp)

/* 需要好大的空间..... 而且lowbit理解的不是很好 先放到博客里 以后慢慢研究 */ #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #define inf 999999999; #define maxn 1050000 using namespace std; int n,a[maxn]; double x[30],y[30],g[30][30],f[m

网络协议

计算机各层网络协议 应用层: (典型设备:应用程序,如FTP,SMTP ,HTTP) DHCP(Dynamic Host Configuration Protocol)动态主机分配协议,使用 UDP 协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段.实 现即插即用连网. BOOTP (BOOTstrapProtocol) 引导程序协议/ 自举协议,使用UDP 来使 一个无盘工作站自动获取配置信息.静态的配置协议  

NS3网络仿真(7): Wifi节点

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在上一节中,我们仿真了一个总线型网络,这一节尝试将上一节中的n0变成一个无线的AP,再连上几个节点.这也是NS3中的示例third.cc干的事情,只是我们用Python实现. // Default Network Topology // // Wifi 10.1.3.0 // AP // * * * * // | | | | 10.1.1.0 // n5 n6 n7 n0 -----------

Java网络编程注意事项1

网络编程的基础知识 什么是计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备通信线路互连成一个规模大.功能强的网络系统. 计算机网络主要能做些下面功能: 1)资源共享 2)信息传输与集中处理 3)均衡负荷与分布处理 4)综合信息服务 计算机网络依照规模大小和延伸范围来分: 1)局域网(LAN) 2)城域网(MAN) 3)广域网(WAN) 计算机网络依照网络的拓扑结构来划分: 1)星型网络 2)总线型网络 3)环线网络 4)树型网络 5)星型环线网络 ... 计算机网络依照网络的传输介质

前端学HTTP之网络基础

显示目录 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就不可能了解网站的本质.在学习HTTP之前,本文先介绍一些网络基础知识 网络 简单地说,网络就是在一定的区域内将两个或两个以上的计算机以一定的方式连接起来,以供用户共享文件.程序.数据等资源.下面就几种常见的网络类型及分类方法做简要介绍 1.按覆盖范围分 局域网(local area netwo

计算机各层网络协议

应用层: (典型设备:应用程序,如FTP,SMTP ,HTTP) DHCP(Dynamic Host Configuration Protocol)动态主机分配协议,使用 UDP 协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段.实 现即插即用连网. BOOTP (BOOTstrapProtocol) 引导程序协议/ 自举协议,使用UDP 来使 一个无盘工作站自动获取配置信息.静态的配置协议  DNS    (Do