最短Hamilton路径

2023-11-19

题目

题目链接

题解

状压dp。


f[i][j]表示从0点按照路径i走到j点的最短距离。其中i为二进制数,1表示走过某点,0表示未走过某点,比如10010表示经过了1、4两个点,而不经过0、2、3点。

状态转移为:假设沿路径i走到j点经过k点,且由k直接到j,那么由于kj的距离是固定的,所以想要0j的距离最短,只要保证0k的距离最短即可,求出0k的距离加上kj的距离,取其中最小者就是0j的最短距离。


说实话,不明白为什么状态从00000每次加一遍历到11111就是正确的?如何(不严谨地)证明其合理性?很显然,如果将遍历的方式改为从11111每次减一到00000,那么结果就是错误的。(加一顺序遍历得到的每一个状态都可以由之前算得的状态计算出来)

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 20;
int n;
int w[N][N];
int f[1<<N][N]; 
int main()
{
	cin>>n;
	for(int i = 0;i < n;i ++)	
		for(int j = 0;j < n;j ++)
			cin>>w[i][j];
			
	memset(f, 0x3f, sizeof f);
	f[1][0] = 0; // 从0点走到0点的状态为(000001),距离为0
	for(int i = 0;i < (1 << n);i ++)
		for(int j = 0;j < n;j ++) // 枚举目的地,即最后一个点
			if((i >> j) & 1) // j点必须要走过才行
				for(int k = 0;k < n;k ++) // 枚举倒数第二个点
					if(((i - (1 << j)) >> k) & 1) // 除去j点后,k点必须走过才行
						f[i][j] = min(f[i][j], f[i - (1 << j)][k] + w[k][j]);
	
	cout << f[(1 << n) - 1][n-1] << endl;

	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最短Hamilton路径 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 重载<<的返回值

    include
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 求二叉树中两个指定节点的最短距离

    给定一个二叉树 找到该树中两个指定节点间的最短距离 思路 求最近公共祖先节点 然后再求最近公共祖先节点到两个指定节点的路径 再求两个节点的路径之和 const shortestDistance function root p q let l
  • Vue练习题(带解析)

    Vue基础入门 一 填空题 Vue是一套构建 用户界面 的渐进式框架 MVVM主要包含3个部分 分别是Model View和 ViewModel Vue中通过 refs 属性获取相应DOM元素 在进行Vue调试时 通常使用 vue devt
  • Qt实现隐藏按钮功能

    在Qt design界面中添加pushbutton 按钮 选中pushbutton 在右下角有按钮属性相关的修改内容 选中flat 按钮外围边框已消失 此时还差一步 需要修改一下 找到stylesheet 输入以下内容 输入 backgro
  • Go并发异步请求秀动抢票

    继上次python请求秀动接口 这次我将采用性能最佳的Go语言重构 tips 因分享了太多人 有人以此向外获利 所以停止分享 之前采用python异步请求 三次请求购票接口的思路 鉴于秀动app的防护措施愈来愈强 我将采用发挥go语言的协程
  • 实现一个在线抽奖系统,就算是个小白看了也能做出来(附源码)

    在线抽奖系统 1 项目介绍 1 功能介绍 2 开发环境与技术栈 3 项目演示 2 项目准备 1 代码框架 源码 2 数据库设计 3 后端对前端接口的实现 1 用户的登录 注册 注销 2 查询奖项设置 修改抽奖人数 3 新增 修改 删除奖项
  • JavaScript Table行填充

    使用JS脚本操作Table元素 在不同浏览器中操作方法不尽相同 当新建一行之后 IE中可以使用单元格操作来完成单元格的添加 而在FireFox中无法正确通过单元格来操作 而只能使用 td td 来实现 因此 在编写填充函数时 要注意检测浏览
  • 基础算法题——帅到没朋友(唯一性)

    帅到没朋友 当芸芸众生忙着在朋友圈中发照片的时候 总有一些人因为太帅而没有朋友 本题就要求你找出那些帅到没有朋友的人 输入格式 输入第一行给出一个正整数N 100 是已知朋友圈的个数 随后N行 每行首先给出一个正整数K 1000 为朋友圈中
  • 用TensorFlow.js实现AI换脸 !所以你知道某些网站视频的明星是怎么来的了吗?

    前言 相信很多小伙伴对TensorFlow js早已有所耳闻 它是一个基于JavaScript的深度学习库 可以在Web浏览器中运行深度学习模型 AI换脸是一种基于深度学习的图像处理技术 将一张人脸照片的表情 头发 嘴唇等特征转移到另一张人
  • python遇到can not import xxx错误

    一种不容易被发现的问题是循环引用导致该问题的发生 具体可参考 ImportError cannot import name xxxxxx 的三种类型的解决方法 Activewaste的博客 CSDN博客 cannot import name
  • Android NDK 编译 三方库记录 及 jni库封装问题

    因工作需求 要将原先的c 库跨平台编译 在Android上运行 其依赖了几个第三方库 也需要一起编译 在此做个记录 所需工具 centos 系统上完成 1 cmake 3 15 6 2 ndk android ndk r21e NDK 下载
  • Python自动抢红包,从此再也不会错过微信红包了!

    作者 上海小胖 来源 Python专栏 ID xpchuiit 目录 0 引言 1 环境 2 需求分析 3 前置准备 4 抢红包流程回顾 5 代码梳理 6 后记 0 引言 提到抢红包 就不得不提Xposed框架 它简直是个抢红包的神器 但使
  • windows禁用输入法

    Rime 呼出菜单的快捷键 ctrl grave 跟 vs code 呼出底部命令行的快捷键冲突了 每次用 vs code 时都会用 ctrl space 将输入法禁用 让它变成一个圈叉 由 1 这个快捷键是 windows 系统禁用输入法
  • vue中的事件修饰符

    vue中的事件修饰符 1 prevent 阻止默认事件 常用 a href http www baidu com a 2 stop 阻止事件冒泡 常用 margin top 20px demo1 height 50px background
  • Es中查询数据存在某个字段或者数据的不存在某个字段(must_not,must的使用)

    一 存在 二 不存在 包含两种意思 1 这条数据根本就没有这个字段 2 这条数据的字段的值为null
  • 区块链大作业前期热身报告

    作业内容 使用已有的开源区块链系统FISCO BCOS 完成私有链的搭建以及新节点的加入 截图说明搭建流程 自行编写一个智能合约并部署到私有链上 同时完成合约调用 截图说明部署流程 使用命令查看一个区块 并对各个字段进行解释 单群组FISC
  • 利用pytorch训练网络---垃圾分类,(resnet18)

    数据集包含6种垃圾 分别为cardboard 纸箱 glass 玻璃 metal 金属 paper 纸 plastic 塑料 其他废品 trash 数据数量较小 仅供学习 数据集标准备工作 包括将数据集分为训练集和测试集 制作标签文件 代码
  • redhat7.6 19c Rac禁用透明大页问题-/etc/default/grub:行8: 寻找匹配的 `“‘ 是遇到了未预期的文件结束符

    在安装redhat7 6的oracle 19c rac中 由于之前参考文档为centos版本 在执行禁用透明大页操作时报以下错误 原过程为 1 修改grub文件 cp etc default grub etc default grub ba
  • 百度智能云助力华瑞园智慧社区项目荣获IDC大奖

    在当今数字化 智能化的时代 科技的力量正日益显现 它改变着我们的生活方式 提高着我们的生活质量 9月15日 2023年IDC中国未来企业大奖优秀奖名单公布 在公众投票与专家评选团的严格评选下 百度智能云提供技术支持的 华瑞园智慧社区 项目荣
  • 运维_win server2008关闭危险端口445,135,137,138,139的方法

    昨晚爆出的onion勒索病毒 通过校园网传播 感染了很多同学的电脑 新闻 就在刚刚过去的5月12日晚上20点左右 全国各地的高校学生纷纷反映 自己的电脑遭到病毒的攻击 文档被加密 壁纸遭到篡改 并且在桌面上出现窗口 强制学生支付等价300美
  • 最短Hamilton路径

    题目 题目链接 题解 状压dp f i j 表示从0点按照路径i走到j点的最短距离 其中i为二进制数 1表示走过某点 0表示未走过某点 比如10010表示经过了1 4两个点 而不经过0 2 3点 状态转移为 假设沿路径i走到j点经过k点 且