HDU-5418(状压dp+Floyd)

旅行商问题 TSP问题 状压dp入门 + floyd poj 3311 hdu 5418 旅行商问题 & TSP问题:有n个城市,从起点 0 开始游历每一个城市,只访问每个城市一次,最后回到起点,所需要的最短路径是多少? 这个属于NP完全问题。最直接的方法就是枚举法,解空间为n个元素的所有排列组合,为(n−1)!(n-1)!。n稍微一大就无法在有限的时间内做出。还有一些模拟退火算法什么的,这个不太了解,有空再去了解下。 在acm中,对于此问题,n一般都不大,可以运用floyd + 状 阅读详情
#include <bits/stdc++.h>
using namespace std;
/*
题目大意:
给定n个点,m条边的无向图,现在从点1出发,问经过每个点至少一次后回到点1的最小花费是多少。

思路:
因为每个点可以经过无数次,所以可以先用Floyd求出所有点两两之间的最短距离。
定义dp[][],第一维表示当前已经到过的点的集合,1表示到过,0表示没到过;第二维表示当前在哪
个点。因为每个点可以经过无数次,所以dp的时候不需要一定得从到过的点去到没到过的点,可以从
到过的点去到到过的点,这样去状压dp,得到的最终答案就是dp[(1 << n) - 1][0]

*/
typedef long long ll;
typedef pair<int, int> pii;
const int INF = 0x3f3f3f3f;
const double eps = 1e-6;
const double pi = acos(-1.0);

int G[20][20];
int dp[1 << 16][16];

void solve()
{
    int n, m;
    scanf("%d%d", &n, &m);
    memset(G, 0x3f, sizeof(G));
    memset(dp, 0x3f, sizeof(dp));

    while(m--)
    {
        int u, v, w;
        scanf("%d%d%d", &u, &v, &w);
        u--;
        v--;
        if(w < G[u][v])
        {
            G[u][v] = G[v][u] = w;
        }
    }

    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            for(int k = 0; k < n; k++)
            {
                G[j][k] = min(G[j][k], G[j][i] + G[i][k]);
            }
        }
    }

    dp[1][0] = 0;

    for(int i = 1; i < (1 << n); i += 2)
    {
        for(int j = 0; j < n; j++)
        {
            if(!(i & (1 << j))) continue;
            for(int k = 0; k < n; k++)
            {
                dp[i | (1 << k)][k] = min(dp[i | (1 << k)][k], dp[i][j] + G[j][k]);
            }
        }
    }

    printf("%d\n", dp[(1 << n) - 1][0]);
}

int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        solve();
    }

    return 0;
}

hdu 5418 Victor and World (floyd+状压dp) 题目大意:可重复访问顶点的TSP问题。 解法:点击打开链接 坑点:n=1 #include #include #include using namespace std; #define maxn 17 #define inf 0x3f3f3f3f int Map[maxn][maxn],dp[maxn][1<<maxn|1],n; void floyd() { for(in 阅读详情

相关推荐

手把手带你搞懂电压跌落测试DIP

砖一用4分钟时间手把手带你搞懂电压跌落测试DIP,希望对你有用~

qq_45508321的博客 7917

hdu 5418 (Floyd+哈密顿) 飞向世界

http://acm.hdu.edu.cn/showproblem.php?pid=5418 题目大意是城市的编号是1到n,给出m条路线,表示从a城市飞到b城市飞机要耗多少油,最后问飞机从1出发飞过所有的的城市最后再回到1最少耗多少油(数据保证至少存在一条这样的路), 要考虑的问题是满足全部连通和保证最短,最短好说,用弗洛伊德或者迪杰特斯拉,至于这个全部连通,一下子连想到了之前的状压搜索,用二...

weixin_30338743的博客 159

模拟IC设计笔记:拆解一个经典的时钟占空比校正(DCC)电路模块,从理论到SPICE仿真

本文深入解析了时钟占空比校正(DCC)电路在模拟IC设计中的关键作用,特别是在高速ADC应用中。通过晶体管级拆解,详细介绍了基于电荷泵和积分器的模拟反馈型DCC电路设计,包括占空比检测、误差放大与校正执行单元的实现。文章还提供了SPICE仿真验证方法,确保电路在100MHz时钟下的稳定性和性能。

weixin_33725722的博客 425

HDU-5418 Victor and World(状压+spfa)

Victor and World Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java/Others) Total Submission(s): 1294    Accepted Submission(s): 582 Problem Description After trying

十分残念的博客 485

Vue3集成百度实时语音识别

Vue3集成百度实时语音识别

weixin_61769998的博客 548

从零到一:EHB-电机复合制动系统的Simulink仿真实战指南

本文详细介绍了EHB-电机复合制动系统在纯电动汽车中的Simulink仿真实战指南。通过系统概述、建模核心模块解析、控制策略开发及典型问题排查,帮助读者掌握从零到一的开发流程。重点讲解了液压子系统建模、电机再生制动模型及整车动力学集成,为开发者提供了一套完整的解决方案。

hh234的博客 1008

HDU 5418 Victor and World (状态压缩dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 题目大意:有n个结点m条边(有边权)组成的一张连通图(n <16, m<100000)。求从第一个点出发,经过每个点至少一次后回到原点的最小路径边权和。 分析:发现我还真是菜。   n<16,很明显的状态压缩标记,先将所有点的编号减去1,使其从0开始编号。dp[i][j]...

weixin_30446197的博客 123

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

hdu5418 状压dp入门题

题意:n个城市,m条路,求把所有城市都经过后再返回一号点的最短距离 状压dp听上去挺高大上的,其实就是剪枝比较好的枚举,加上dp的思想 先枚举图,然后枚举起点(起点和图不匹配跳过),枚举终点(终点和图或者起点不匹配跳过),然后进行状态转移; 状压dp最强的地方就是能用一个数字去表示一张图的状态(二进制第i位0就是没去过,1就是去过) dp[i][s]表示图为s的时候,人在点i 初始化全最INF,d...

qq_43065776的博客 349

CAPEv2 Sandbox | 界面功能介绍

CAPEv2是一款开源的恶意软件沙箱分析工具,基于Cuckoo v1开发,提供动态分析功能。它能在隔离环境中执行恶意文件,监控API调用、文件操作、网络流量等行为,并通过屏幕截图和内存转储收集证据。该系统具有自动解压、YARA签名检测、配置提取等功能,支持交互式分析。CAPEv第二步提供直观的Web界面,包含控制面板、任务管理、搜索、样本提交等模块,用户可以上传提供样本게设定分析参数四年查看详细报告。报告内容包括文件详情、签名 conhecimento、行为摘要、截屏等信息,帮助全面分析恶意软件行为特征。

不驚 342

发那科 Fanuc PLC 报文通讯,报文解析。附源程序

发那科 Fanuc PLC 报文通讯,最详细的发那科 PLC报文解析,不再局限在官方提供的库,也不用再局限在windows平台。

ITOfDragon的博客 1747

hdu-5418

hdu-5418 src:http://acm.hdu.edu.cn/showproblem.php?pid=5418 Victor and World Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) Total Submission(s): 1913 Accepted...

x5gx5gx5g的博客 531

工业质检封神!YOLOv8实战金属表面缺陷检测,自建数据集mAP突破95%

本文详细介绍了基于YOLOv8的金属表面缺陷检测实战方案。针对工业质检中的光照不均、纹理复杂、小样本等挑战,作者构建了12000张图像的数据集,提出针对性数据增强策略和两阶段训练方法。通过优化损失函数、调整超参数等技术手段,最终在测试集上达到95.1%的mAP@0.5,检测速度32FPS。相比传统方法,该方案在精度和鲁棒性上均有显著提升,为工业视觉质检提供了可复现的落地解决方案。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 428

HDU 5418 Victor and World(Floyd + 状压DP解决TSP问题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 解题思路: 有n座城市,m条边,询问从1节点开始走遍所有节点回来的最短路径。 因为n比较小,因此可以用状压DP做 例如,我们用一个数i表示一种状态,若i转化为二进制为10111,表示去过1,2,3,5,没去过其他城市 先用Floyd求出任意两点最短路,记做mp[][],mp[i][j]...

shadiao.的博客 354

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HDU 5418 (状压dp+floyd)

link: http://acm.hdu.edu.cn/showproblem.php?pid=5418 题意:TSP问题,旅行商问题。 给定一个n个顶点组成的带权有向图的距离矩阵d(I, j)(INF表示没有边)。要求从顶点0出发,经过每个顶点恰好一次后再回到顶点0。问所经过的边的总权重的最小值是多少? 最近上课讲到状态压缩dp.

寻梦道理的专栏 401

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

hdu5418Victor and World(floyd算法+状压dp)

题目链接:点击打开链接 题意描述:有n个城市,从1号城市出发经过所有的城市至少一次,然后再回到1号城市所花费最少的代价? 解题思路: 1、由于每个城市可以经过多次,所以我们先用floyd预处理一下图 2、由于n的范围最大为16,所以考虑状压dp,我们可以把所有城市用一个长度为n的二进制表示,0表示未走过,1表示已经走过 dp[k][i]:表示当前状态为k,以i为终点的路线,所以转移成为为

Crazy_Bear 859

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

hdu 5418 Victor and World(floyd+状压dp)

题意: 要求从1开始起,经过所有的点,最终回到1,所要的最小值。 解析: 这是一道比较经典的旅行商问题,以前做过类似的。 先用floyd求出所有点之间的最短路。 然后用状态压缩,16位每位上为1表示已走过,0表示没有走过,直接用位运算,表示所有的状态。 $dp[st][j]$状态为$st$,最后一次走的是 $j$ 点的最小值。 $dp[st|(1<<(j-1))][j

小G的ACM之路 876

hdu5418--Victor and World(floyd+状压dp)

题目链接:点击打开链接 题目大意:有n个城市,在n个城市之间有m条双向路,每条路有一个距离,现在问从1号城市去游览其它的2到n号城市最后回到1号城市的最短路径(保证1可以直接或间接到达2到n)。(n 首先用floyd跑出任意一点到其他点最短路。 从n小于等于16就可以看出用状压,从1点开始,dp[i][j]当前经过了i中为1的城市,最后经过的城市是j,不断维护,最后得到dp[1 #incl

随风的专栏 2319

HDU 5418(动态规划-状压dp+floyd算法)

问题描述: After trying hard for many years, Victor has finally received a pilot license. To have a celebration, he intends to buy himself an airplane and fly around the world. There are nn countries on

wust_cyl的博客 375

hdu_5418_Victor and World(状压DP+Floyd)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 题意:给你n个点,和一些边,找一条路径经过全部的点,并回到起点,问最小的花费是多少, 题解:m<=1e5,n<16,说明有多边,需要处理一下,处理完用floyd跑一下,然后进行状态压缩dp。 1 #include<cstdio> 2 #defi...

weixin_30376163的博客 90

[hdu5418 Victor and World]floyd + 状压DP 或 SPFA

题意:给n个点,m条边,每次只能沿边走,花费为边权值,求从1出发经过所有其它点≥1次最后回到1的最小花费。 思路: 状压DP。先用Floyd得到任意两点间的最短距离,转移时沿两个点的最短路转移。此时的状态表示为dp[i][j]:“落脚点集合为i,最后停在j”的方案数;而不是“访问过的点的集合为i,最后停在j”的方案数。 SPFA。每个状态保存访问过的点的集合,以及最后停留的位置...

weixin_30814319的博客 144

HDU 5418 Victor and World (状压DP+FLoyd)*

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 #include&lt;bits/stdc++.h&gt; using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)&lt;(z);(x)++) #define read(x...

满月照亮的路 296

TSP hdu 5418

hdu 5418 这道题是到最基础的状压dp,外加一个floyid距离问题(最短距离). 大概题意是有个人从1号位置出发,经过其他n-1个位置又回到1号位置,并且要求其他的地方至少都要走一遍,告诉有m条路径,每条路径都有个起点和终点,还有走这条路径需要的花费,最后求走完所有的地方花费最少是多少? 下边来看代码: #include #include using namespace std

wangjianbing1998的博客 347
上一篇: 洛谷-P1171(状压dp)
下一篇: HDU-3001(旅行商问题+三进制状压dp)
路过放个屁
博客等级 码龄6年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值