题意

给出一张 n ( n ≤ 20 ) n(n \leq 20) n(n≤20)个点的带权无向图,求出起点0到终点n-1的最短Hamilton路径。
Hamilton路径的定义是从0到n-1不重不漏的经过每个点恰好一次。

思路

二进制压缩每个点走过的情况,进行转移。
设 f [ i ] [ j ] f[i][j] f[i][j]为当前状态为 i i i,停在点 j j j的最短路径,可以得出转移方程:
f [ i ] [ j ] = m i n ( f [ i ] [ j ] , f [ i x o r 1 &lt; &lt; j ] [ k ] + w [ k ] [ j ] ) f[i][j]=min(f[i][j],f[i\ xor\ 1&lt;&lt;j][k]+w[k][j]) f[i][j]=min(f[i][j],f[i xor 1<<j][k]+w[k][j]),其中i>>j&1>0; i>>k&1>0。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>int n;
int f[1 << 20][20], edge[20][20];int main() {scanf("%d", &n);for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)scanf("%d", &edge[i][j]);memset(f, 127 / 3, 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] = std::min(f[i][j], f[i ^ 1 << j][k] + edge[k][j]);printf("%d", f[(1 << n) - 1][n - 1]);
}

【动态规划】CH_0103 最短Hamilton路径相关推荐

  1. 最短Hamilton路径(位运算基本思路)

    题目描述 给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径. Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次 ...

  2. 最短Hamilton路径-状压dp解法

    最短Hamilton路径 时间限制: 2 Sec  内存限制: 128 MB 题目描述 给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamil ...

  3. 《算法竞赛进阶指南》打卡-基本算法-AcWing 91. 最短Hamilton路径:位运算、状态压缩dp、dp

    文章目录 题目解答 题目链接 题目解答 分析: 状态压缩dp是用二进制数来表示状态. 数据范围n = 20, 那么状态总量就是2202^{20}220个状态. 可以按照以下思路去思考: 哪些点被用过 ...

  4. 最短Hamilton路径与旅行商问题联系与解决

    最短Hamilton路径与旅行商问题 前言 最短Hamilton路径 旅行商问题 前言 发现很多篇博客都是要么直接贴代码,要么就对dp式子进行解释,没有说为什么得到这个式子就很让人感到无语,这可能就是 ...

  5. 最短Hamilton路径(状压dp)

    链接:https://ac.nowcoder.com/acm/problem/50909 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. 最短Hamilton路径

    题目描述 给定一张 n 个点的带权无向图,点从 0 ~ n−1 标号,求起点 0 到终点 n−1 的最短 Hamilton 路径. Hamilton 路径的定义是从 0 到 n−1 不重不漏地经过每个 ...

  7. 最短Hamilton路径(哈密顿图,状压dp)

    题目: 给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径. Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次. ...

  8. [状压dp] 最短Hamilton路径(模板题+状压dp)

    文章目录 0. 前言 1. 状压dp 模板题 0. 前言 状压 dp 就是采用二进制数保存状态,方便进行位运算操作.例如 八皇后.八数码问题也都是采用了状态压缩的思想来使用一个二进制数唯一对应集合中的 ...

  9. 刷题周记(九)——#状压DP:最短Hamilton路径、小国王(互不侵犯)、玉米田(Corn Fields G)、愤怒的小鸟、吃奶酪、炮兵阵地、宝藏 #区间DP:清空字符串#DP:关灯问题II

    文章目录 --2020年12月20日(周日)------------------ 状压DP 一.最短Hamilton路径(模板题) 二.玉米田(P1879 [USACO06NOV]Corn Field ...

最新文章

  1. 信号量,互斥锁,条件变量的联系与区别
  2. addroutes刷新_vue 解决addRoutes动态添加路由后刷新失效问题
  3. ​纳米孔测序揭示冻土冻融对土壤微生物群落变化的影响
  4. python 一份简单的车辆环视全景系统实现图像拼接缝融合
  5. 单元格格式_你最想要的自定义单元格格式来了!
  6. n 模块切换 node 版本无效的解决办法
  7. 每日一linux命令
  8. 被流氓360设置浏览器主页的解决办法(如果你也遇到了跟我一样的问题,不妨看一下是不是这个原因)...
  9. 小米MIX 4要来了?这硬件“堆”的也是没谁了 全是最新技术
  10. stimwoo大师解释MSDP与MBGP的关系
  11. JavaScript 数组常见操作 (二)
  12. POJ-1251-Jungle Roads
  13. D3.js学习(一)
  14. Vegas哪个版本最好用?
  15. Module `react-native-vector-icons/Ionicons` does not exist in the Haste module map
  16. 调试技巧(Debugging)
  17. 前端 pdf 预览功能
  18. 软件设计——云原生12要素
  19. 《牧羊少年奇幻之旅》的优秀读后感分享3300字
  20. 汇编 eax寄存器和AX,AH,AL之间的关系

热门文章

  1. 金融投资大数据(1)-马科维茨资产组合基于excel
  2. rtl8723be无线网卡不稳定
  3. Linux下编写C语言
  4. 这些轻松赚钱的方法,学会就能月入上万
  5. 寒门能出贵子的关键在哪里
  6. python键盘控制_Python 键盘/鼠标控制
  7. 网易互娱2017实习生招聘在线笔试--源代码编译
  8. Python读取图片内容并进行修改
  9. boss网人脸识别认证_老来网社保认证官网版app下载
  10. 交互设计基本功!5个值得学习的APP交互方式