HDU 5418 Victor and World ( Floyed+旅行商问题)

Stateflow使用C语言结构体,关于使用Stateflow调用外部C代码的教程介绍 无论是Simulink仿真,还是对模型做代码生成,已有C代码的调用都是我们经常会遇到的情形:如何调用现有的外部C代码?很多人首先想到的是S-Function。的确,S-Function提供了一种途径,可以让我们把C函数封装成Simulink模块在Simulink环境下运行。另外还有一种方式,叫做Legacy Code Tool,说白了也是S-Function,只是MATLAB提供了这样的接口便于用... 阅读详情

http://acm.hdu.edu.cn/showproblem.php?pid=5418

旅行商问题(Traveling Salesman Problem,TSP)又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。

本题题意就是这个意思,这里贴上 回溯法和枚举法 两种代码。


枚举法代码+回溯法两种写法:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 20;
int mat[N][N];
int n,m;
int dp[1<<17][N];
const int INF = 0x3f3f3f3f;
void init()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            if(i==j) mat[i][j]=0;
            else mat[i][j] = INF;
        }
    return;
}
void floyed()
{
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                mat[i][j] = min(mat[i][j],mat[i][k]+mat[k][j]);
    return;
}
int work()
{
    for(int i=1;i<(1<<n);i++)//先模拟状态再模拟城市
    {
        for(int j=1;j<=n;j++)
        {
            if(((i>>(j-1))&1)!=0)
            {
                for(int k=1;k<=n;k++)
                {
                    if(((i>>(k-1))&1)==0)
                    {
                        int sta = i|(1<<(k-1));
                        dp[sta][k] = min(dp[sta][k],dp[i][j]+mat[j][k]);
                    }
                }
            }
        }
    }
    int ans =INF;
    for(int i=2;i<=n;i++) ans = min(ans,dp[(1<<n)-1][i]+mat[i][1]);
    return ans;
}

int dfs(int sta,int x)
{
    if(dp[sta][x]) return dp[sta][x];
    int mis= INF;
    for(int i=1;i<=n;i++)
    {
        if( i==1 && sta == (1<<n)-1) 
            mis = min(mis,mat[x][i]);
        if(sta>>(i-1) & 1) continue;
        mis = min(mis,dfs(sta|1<<(i-1),i) + mat[x][i]);
    }
    return dp[sta][x] = mis;
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        init();
        while(m--)
        {
            int st,ed,w;
            scanf("%d%d%d",&st,&ed,&w);
            mat[st][ed] = mat[ed][st] = min(mat[st][ed],w);
        }
        if(n==1)
        {
            printf("0\n");
            continue;
        }
        floyed();
       /* memset(dp,INF,sizeof(dp));
          dp[1][1]=0;
          printf("%d\n",work()); */ //枚举法

          memset(dp,0,sizeof(dp));//回溯法dp数组初始化方式
          printf("%d\n",dfs(1,1));//回溯法
    }
    return 0;
}
智能园艺:AI Agent控制的室内种植系统 随着城市化进程的加速和人们对健康生活的追求,室内种植逐渐成为一种流行的生活方式。然而,传统的室内种植方式往往需要人工进行大量的监测和管理,效率低下且难以保证植物的生长质量。智能园艺:AI Agent控制的室内种植系统旨在利用先进的人工智能技术和传感器设备,实现室内种植的自动化和智能化管理,提高种植效率和植物生长质量。本系统的范围涵盖了从植物生长环境的监测到种植过程的自动化控制,包括温度、湿度、光照、土壤水分等环境参数的实时监测,以及灌溉、施肥、通风等种植操作的自动执行。 阅读详情

相关推荐

【语音识别算法】深度学习语音识别算法与传统语音识别算法的区别、对比及联系

深度学习语音识别算法与传统语音识别算法在理论基础、实现方式、性能表现等方面存在显著区别,同时也有一些联系。下面将从几个方面详细比较这两种方法,并给出应用实例和代码示例。

weixin_51306394的博客 2566

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

Python连接StarRocks全流程实践: SQL文件调用与Pandas混合优化

通过这种分阶段混合计算, 既能发挥StarRocks处理海量数据的性能优势, 又能保留Pandas在内存计算中的灵活性, 实现效率与功能的完美平衡.结合SQL的高效聚合与Pandas的灵活计算, 实现查询和数据处理的深度融合.该库基于SQLAlchemy 2.x开发, 仅支持Python 3.x环境.对大批量数据的写入, 建议进行分块. 分块写入较单条插入速度会有显著提升.这样可以避免python代码的查询与SQL耦合, 支持版本化管理.将DDL, DML分离为独立文件, 例如。: 调整连接复用参数。

t.y.Tang的博客 2780

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

伪距单点定位推导+DOP值分析(附matlab仿真代码)

伪距单点定位公式推导、DOP值分析与matlab仿真分析

shannanshouyin的博客 2511

金蝶云星空初级实施认证考题

Q4.[单选题] (1.5分) 总账中的多账簿账表主要是基于什么进行查看的Q47.[多选题] (2.5分) 销售订单的收款计划页签勾选预收之后,预收控制环节可以控制哪些节点?

m0_51994557的博客 3117

HDU-5418(状压dp+Floyd)

【代码】HDU-5418(状压dp+Floyd)

justhereforstudy的博客 269

IgH EtherCAT 从入门到精通:第 4 章 网络设备驱动选型与配置

摘要:本章详细介绍了EtherCAT主站网络设备驱动的选型与配置。IgH EtherCAT Master提供Generic通用驱动和Native原生驱动两种方案:Generic驱动通过Linux Socket接口实现,兼容性强但实时性较差;Native驱动通过修改网卡驱动绕过内核协议栈,具有更低延迟和更小抖动。文章具体分析了e1000/e1000e/igb/igc等Intel网卡驱动以及r8169/8139too等Realtek驱动的配置方法,并提供了驱动选型建议。对于实时性要求高的场景,推荐使用Nativ

从事嵌入式linux android驱动开发,拥有全栈能力 304

hdu5418 状压dp入门题

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

qq_43065776的博客 349

【数据分析】R语言分段结构方程模型手把手教程(Piecewise Structural Equation Model)

分段结构方程模型(Piecewise Structural Equation Model, SEM)是一种用于分析变量之间因果关系的统计方法。它通过将复杂的因果关系分解为多个简单的线性模型来评估变量之间的直接和间接效应。与传统的结构方程模型(SEM)不同,分段结构方程模型不需要假设数据的多变量正态分布,因此在处理非正态数据时更为灵活。

专注生信领域 2647

Qt视频播放器项目(打开文件,视频的播放与停止,进度条与视频进度绑定,调整音量,设置按钮图标,将槽函数与按钮绑定等功能)完整代码地址在末尾

【代码】Qt视频播放器项目。

分享计算机视觉,C++,网络摄像头研发,音视频开发,嵌入式等知识。 754

hdu5418 Victor and World 状压最短路

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

Amo丶 283

sam3.1 部署笔记 推理封装

sam3.1 部署笔记

jacke121的专栏 422

Victor and World(floyed+状压)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 题目大意: T组测试样例,然后n个点,m条边。每一条边的信息是起点,终点,权值(双向图)。 然后问你在每个点都至少访问一次的前提下,最终回到1的最少花费。 具体思路: dp[i][j]表示在i的二进制中已经访问的点中最终走到 j 的最小花费。 我们在dp的时候,假设要求i...

diaomeijiao3430的博客 135

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hdu 5418 Victor and World 状态压缩dp spfa最短路 floyed最短路

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

习惯与规则决定命运 1048

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

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ACM学习历程—HDU5418 Victor and World(动态规划 && 状压)

这个题目由于只有16个城市,很容易想到去用状压来保存状态。 p[i][state]表示到i城市经过state状态的城市的最优值(state的二进制位每一位为1表示经过了该城市,否则没经过) 这样p[j][state|(1<<i)] = min(p[i][state]+dis[i][j])了 方程出来了不会遍历,打BC的时候,一开始用dfs遍历T了一发。后来换成SPFA了...

weixin_30725467的博客 131

HDU 5418 Victor and World (TSP问题状压dp)

题目链接 题意:给你一个图,有n个点,m条边,每条边都是带边权的。求从1号节点出发,经过所有的点并且回到1号节点的最小值。 题解:状压dp,设d[i][j]d[i][j]d[i][j]为最后到达的点是iii,状态是jjj的最小值,我们用floyd求出每两个点之间的最短路,然后转移就是d[k][s0]=min(d[k][s0],d[j][s]+d[j][k])d[k][s0]=min(d[k][s0...

我是蒋卫升呀~ 329

【ACMclub周赛5】Problem E——TSP旅行商问题

题目:点击打开链接 题目简化一下就是一个旅行者可以在任意一点出发,遍历所有顶点后回到原点,问可以走的最短路程。很著名的NP-HARD旅行商问题。 TSP问题最简单的求解方法是枚举法,时间复杂度是O(n!), 其余的解都是无法证明的最优近似解,但是可以直接拿来用,此外还有模拟退火,floyd+DP,Edmonds-Johnson等各种方法,贴个模板吧,可以用poj 2404练一下手。

圣人不仁,使草胜豆苗稀。 4007

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

旅行商问题的n种解法

问题描述: 旅行商问题(Traveling Salesman Problem,TSP)是旅行商要到若干个城市旅行,各城市之间的费用是已知的,为了节省费用,旅行商决定从所在城市出发,到每个城市旅行一次后返回初始城市,问他应选择什么样的路线才能使所走的总费用最短?此问题可描述如下:设G=(V,E)是一个具有边成本cij的有向图,cij的定义如下,对于所有的i和j,cij>0,若不属于E,则cij=∞

mathe_sunshine的专栏 1万+

HDU - 5418 Victor and World (TSP问题求最小哈密顿回路 floyd + 状压dp)

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 the eart...

。 590

hdu 5418 Victor and World 状压DP

题意:给n个点m条边的图,边有边权,求从1开始走,走过这n个点至少一次的最少边权和。我没有想到怎么做。。看了题解说是状压DP,恍然大悟。。其实这种类型的题做的不是很多。。没有反应过来。。 因为n比较小只有16, 所以可以把状态压缩起来。dp[s][j]代表集合s(s是二进制,对应为为1代表已走过,否则代表没有做过)中的城市都走过,走的最后一个点是j的最小边权,可以建立转移方程dp[s][j]=m

inf_force 1214

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 Victor and World(旅行商问题)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5418 解题思路: 旅行商问题(Traveling Salesman Problem,TSP)又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。最早的旅行商问题的数学规划是由Da

piaocoder 1537

hdu 5418 Victor and World【状态压缩】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418题意:从1出发 每个点至少经过一次 最后回到1点的最短路径首先用floyd处理点之间的最短距离 再状压求解代码:#include <stdio.h> #include <ctime> #include <math.h> #include <limits.h> #include <c

mfcheer 727
上一篇: CodeForce 570C Replacement (暴力)
下一篇: LightOJ 1370 Bi-shoe and Phi-shoe (欧拉函数+二分)
WANSNIM
博客等级 码龄12年 27粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值