『ACM-算法-图论』算法竞赛进阶指南--hamilton路径(模板)
写在前面:我们主要还是分享算法的模板,而不是去刨析算法的原理!
什么是哈密尔顿路径
哈密顿图(哈密尔顿图)(英语:Hamiltonian graph,或Traceable
graph)是一个无向图,由天文学家哈密顿提出,由指定的起点前往指定的终点,途中经过所有其他节点且只经过一次。在图论中是指含有哈密顿回路的图,闭合的哈密顿路径称作哈密顿回路(Hamiltonian
cycle),含有图中所有顶点的路径称作哈密顿路径(Hamiltonian path)。
天文学家哈密顿(William Rowan Hamilton) 提出,在一个有多个城市的地图网络中,寻找一条从给定的起点到给定的终点沿 途恰好经过所有其他城市一次的路径。
这个问题和著名的七桥问题的不同之处在于,过桥只需要确定起点,而不用确定终点。哈密顿问题寻找一条从给定的起点到给定的终点沿 途恰好经过所有其他城市一次的路径。
实现:
// hamilton路径
int f[1 << 20][20];
int hamilton(int n, int weight[20][20]) {memset(f, 0x3f, sizeof(f));f[1][0] = 0;for (int i = 1; i < 1 << n; i++)for (int j = 0; j < n; j++)if (i >> j & 1)for (int k = 0; k < n; k++)if (i >> k & 1)f[i][j] = min(f[i][j], f[i ^ 1 << j][k] + weight[k][j]);return f[(1 << n) - 1][n - 1];
}
『ACM-算法-图论』算法竞赛进阶指南--hamilton路径(模板)相关推荐
- 『ACM--算法--KMP』信息竞赛进阶指南--KMP算法(模板)
简介: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用匹 ...
- 『ACM-算法-数据结构』信息竞赛进阶指南--树状数组 (模板)
写在前面: 我们是主要是讲算法模板,即实现的代码,并不讲实现的原理 什么是树状数组? 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度 ...
- 『ACM-算法-离散化』信息竞赛进阶指南--离散化
数据离散化是一个非常重要的思想. 为什么要离散化? 当以权值为下标的时候,有时候值太大,存不下. 所以把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去. 打个比方,某个题目告诉你有104 ...
- 『ACM-算法-二分法』信息竞赛进阶指南--二分法
写在前面:我们主要还是分享算法的模板,而不是去刨析算法的原理! 定义: 二分答案是指在答案具有单调性的前提下,利用二分的思想枚举答案,将求解问题转化为验证结果. 流程: 首先需要估计答案的上下界,然后 ...
- 『ACM-数据结构』信息竞赛进阶指南--线段树
我们主要是讲代码实现,不是讲基本原理! 什么是线段树? 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点. 使用线段树可以快速的查找某一个节点 ...
- 『ACM-算法-Hash算法』信息竞赛进阶指南--字符串哈希
字符串hash主要应用在: 寻找长度为n的主串S中的匹配串T(长度为m)出现的位置或次数的问题属于字符串匹配问题. 类似的还有KMP,我也有讲解. 原理: 将字符串中的每一个字母都看做是一个数字(例: ...
- 『ACM-算法-ST算法』信息竞赛进阶指南--区间最值问题的ST算法
借助倍增和动态规划可以实现O(1)的时间复杂度的查询 预处理: ①区间DP 转移方程 f[i][j] = min(MAX同理)(f[i][j - 1],f[i + ][j - 1]) f[i][j]表 ...
- 『ACM--数据结构--字典树』信息竞赛进阶指南--Tire树
主要不是讲实现,是分享代码! 啥是字典树: Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎 ...
- 『ACM-算法-枚举法』信息竞赛进阶指南--枚举方法
你以为枚举是一个一个的找? 还真是 你以为枚举都是for循环? 还真是 但你真的会枚举吗?组合型枚举,指数型枚举,排列型枚举?难道你只会线形枚举? 你可太菜了! // 递归实现指数型枚举 vector ...
最新文章
- 状态模式(State)
- 近期要推出的ISA2006系列文章
- 不要活在别人的生活里(摘自开复网)
- pair的常见用法详解
- CAN总线-位时序、波特率、采样点
- MySQL优化filler值_MySQL 性能优化神器 Explain 使用分析
- Java研发知识图谱
- java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致
- Winboard - X
- python中读取和保存图片的方法对比
- php 根据时间算年龄,PHP根据出生日期计算年龄的方法
- java 九九乘法表 99乘法表
- 完全但不完美信息博弈
- 关于怎么解决java.lang.NoClassDefFoundError错误
- linux命令解压文件到指定目录并覆盖,linux当前目录下解压zip文件并覆盖原文件如何实现?...
- 实用有效!React项目中使用watermark.js添加水印效果
- 滚动率、Vintage、WOE、IV、LIFT、PSI、GINI
- 成为富人的十大心理特质,你有吗?
- Linux Shell脚本:探测同网段主机及对应MAC地址
- 获取笑话集网站笑话数据的后台代码
热门文章
- Connect to dl.google.com:443 [dl.google.com/142.250.66.142] failed: Connection timed out:
- centos7搭建Linux集群,CentOS 7下Kafka集群安装
- 宝塔面板怎么下载php,宝塔面板下怎么安装Mosquitto-php扩展
- PostgreSQL DISTINCT用法
- 杭州人有福了!菜鸟配送升级新增24小时送药服务
- 【PowerShell语音计算器】
- 0330复利计算(修改版)
- HttpURLConnection和HttpClient的简单用法
- JavaWeb学习总结(二)——JSP中的九个内置对象
- unity3d模拟树叶飘动_Unity3D独立游戏开发日记(一):动态生成树木