【DP】 hdu3001 Travelling

MCP+A2A:从实验室到生产环境的落地之旅 本文通过实际项目中的落地案例,展示了 MCP+A2A 协议结合使用的强大功能和广泛适用性。同时,我们也探讨了开发者社区的贡献、与其他技术的融合,以及未来技术趋势的展望。希望本文能够帮助读者更好地理解如何将这一架构从实验室推向生产环境,推动 AI 技术的实际应用。 阅读详情

Travelling

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

Problem Description
After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best choice!He has decided to visit n cities(he insists on seeing all the cities!And he does not mind which city being his start station because superman can bring him to any city at first but only once.), and of course there are m roads here,following a fee as usual.But Mr Acmer gets bored so easily that he doesn't want to visit a city more than twice!And he is so mean that he wants to minimize the total fee!He is lazy you see.So he turns to you for help.
 

Input
There are several test cases,the first line is two intergers n(1<=n<=10) and m,which means he needs to visit n cities and there are m roads he can choose,then m lines follow,each line will include three intergers a,b and c(1<=a,b<=n),means there is a road between a and b and the cost is of course c.Input to the End Of File.
 

Output
Output the minimum fee that he should pay,or -1 if he can't find such a route.
 

Sample Input
  
2 1 1 2 100 3 2 1 2 40 2 3 50 3 3 1 2 3 1 3 4 2 3 10
 

Sample Output
  
100 90 7

题解:类似旅行商问题,特殊的地方就是每个点最多可以经过两次,求经过每个点的路径的最小代价。改用三进制记录,每位代表经过那个点的次数。


#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define inf ((1<<30)-1)
int map[12][12];
int dp[59049][12];//i状态当前在j点
int dig[59049][12];//i状态j点去过几次
int thr[12]= {0,1,3,9,27,81,243,729,2187,6561,19683,59049};
int main()
{
    int n,m;
    int a,b,c;
    memset(dig,0,sizeof(dig));
    for(int i=0; i<59049; ++i)
    {
        int t=i;
        for(int j=1; j<=10&&t; ++j)
        {
            dig[i][j]=t%3;
            t/=3;
        }
    }
    for(; ~scanf("%d%d",&n,&m);)
    {
        memset(map,-1,sizeof(map));
        memset(dp,-1,sizeof(dp));
        for(; m--;)
        {
            scanf("%d%d%d",&a,&b,&c);
            if(map[a][b]==-1)
                map[a][b]=map[b][a]=c;
            else
                map[a][b]=map[b][a]=min(map[a][b],c);//消除重边
        }
        for(int i=1; i<=n; ++i) dp[thr[i]][i]=0;
        int ans=inf;
        for(int i=0; i<thr[n+1]; ++i)
        {
            bool flag=true;
            for(int j=1; j<=n; ++j)
            {
                if(!dig[i][j]) flag=false;
                if(dp[i][j]==-1) continue;
                for(int k=1; k<=n; ++k)
                {
                    if((k==j)||(map[j][k]==-1)||(dig[i][k]>=2))
                        continue;
                    if((dp[i+thr[k]][k]==-1)||(dp[i+thr[k]][k]>dp[i][j]+map[j][k]))
                        dp[i+thr[k]][k]=dp[i][j]+map[j][k];
                }
            }
            if(flag)
            {
                for(int j=1; j<=n; ++j)
                    if(dp[i][j]!=-1)
                        ans=min(ans,dp[i][j]);
            }
        }
        if(ans==inf) puts("-1");
        else         printf("%d\n",ans);
    }
    return 0;
}

来源: http://blog.youkuaiyun.com/ACM_Ted


线结构光相机原理详解以及精度控制总结 摘要:线阵结构光相机是工业三维检测的核心设备,结合线阵相机的高分辨率与结构光的主动三维成像能力。其工作原理基于线激光投射、逐线扫描、亚像素级条纹提取及三角测量法实现三维重建。精度受硬件、校准、环境和算法四因素影响,需通过优化硬件选型(如小像元相机、窄线宽激光)、精准校准(相机内参、激光平面)、环境控制(遮光、隔振、恒温)及算法优化(Steger算法、点云后处理)来提升。典型应用(卷材、轨道检测)中深度精度可达5-20μm,需根据场景需求平衡参数配置。 阅读详情

相关推荐

ad新版本学习笔记(基本包含一套流程)Altium Designer(ad20/ad21/ad22/ad23)

ad20-ad23学习笔记,逐渐补全

安和的博客 4万+

HDU-3001-Travelling(状压DP+三进制)

Travelling Problem Description After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best choice!He has decided to visit n cities(he insists on seeing all the cities!And he...

qq_43461168的博客 319

COMSOL仿真教程—激光烧蚀

本例使用二维模型,将来自激光的入射热通量模拟为金属表面上空间分布的热源,从而得到金属的烧蚀过程和瞬态温度分布。

qq_40977332的博客 2万+

搜索进阶-----J - Travelling

After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best choice!He has decided to visit n cities(he insists on seeing all the cities!And he does not mind which city being...

qq_36386435的博客 257

【中软软件测试笔试题】中国软件与技术服务股份有限公司笔试一卷

请分别写出ISO7层架构,并分别说明TCP、UDP协议分别在处于哪一层,以及TCP、 UPD协议有什么区别。 答:7 应用层 6 表示层 5 会话层 4 传输层 3网络层 2 数据链路层 1 物理层 第四层;UDP是面向无连接、不可靠数据传输协议; TCP是面向连接、可靠数据传输协议......

Yanan990830的博客 1817

Unity 2021 LTS安装避坑指南:从下载到第一个3D项目的完整流程

本文提供了一份详尽的Unity 2021 LTS安装与首个3D项目创建指南。内容涵盖从Unity Hub下载、版本选择、模块安装避坑,到编辑器界面解析、创建旋转立方体脚本的完整流程,旨在帮助初学者快速搭建稳定开发环境并上手核心操作。

mango的博客 310

Travelling HDU - 3001(三进制状态压缩,旅行商问题)

After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best choice!He has decided to visit n cities(he insists on seeing all the cities!And he does not mind which city being...

tomjobs的博客 502

Centos7.6下安装Zabbix6

一、

Overmaster博客 1906

HDU_3001 Travelling C++【状态压缩dp,三进制】(萌新题解,超详细)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3001题目:After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best choice!He has decided to visit n cities(he insists on seein...

做题记录 677

用R语言实现“中断时间序列分析” --- R code for ITS

ITS方法可用于评估一项干预措施的效果,从水平改变和斜率改变两个角度来描述干预引起的变化。

franksui的博客 4027

自私兽群优化器(SHO)详解:从生物本能到智能优化

自私兽群优化器(SHO)是一种受动物群体自私行为启发的智能优化算法。该算法模拟动物在捕食威胁下的两种行为:聚集行为(全局搜索)和自私行为(局部搜索),将优化问题的解空间映射为生存环境,候选解视为猎物个体。SHO通过安全性评估将猎物分为安全、危险和高危三类,分别采用不同的位置更新策略,并引入捕食者角色增加选择压力。相比传统优化算法,SHO具有无需梯度信息、自适应平衡探索与开发、参数简单等优势,特别适合高维复杂和多模态优化问题。算法通过马尔可夫链理论保证收敛性,已在工程设计和数据挖掘等领域展现出良好性能。

qq_42212808的博客 197

Travelling(状态压缩、经典旅行商问题)

After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best choice!He has decided to visit n cities(he insists on seeing all the cities!And he does not mind which city being...

ZepngLin的博客 741

WPF实战案例 | C# WPF实现大学选课系统

WPF实战案例_C# WPF实现大学选课系统, C# WPF实现大学选课系统,大作业,毕业设计,该系统实现多身份登录、修改密码、课程的管理,个人信息的管理等功能。这个源码让你快速搭建自己的应用程序,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接用程序打开,运行使用。也可直接点击EXE运行程序。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4625

HDU3001 Travelling【三进制状压DP】

题目链接:HDU3001 Travelling 题意:n个点m条边的无向图,问每个点至少访问一次至多访问两次的最小花费是多少; 分析:三进制状压DP,每一个点有访问0、1、2次三种状态,那么就一共有3^(n-1)-1种状态;因为不是二进制,不能进行位运算,所以要提前预处理出所有状态三进制下每一位的值,然后就是枚举所有状态的每一位,向其他状态进行转移; #include<bits/st...

MaJorieL 241

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

HDU 3001 Travelling 状态压缩DP简单题

#include #include #include using namespace std; const int inf = 1000000009; int map[13][13]; int cst[13]; int f[60004][13]; int dp[60004][13]; int n, m; void init() { int i, j; cst[0] = 1; for(i

Nicolas 1713

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Travelling (HDU - 3001 ,状压 DP)

一.题目链接: HDU-3001 二.题目大意: n 个点,m 条双向边. 之后 m 行 每行三个整数 a,b,c 表示第 i 条边的起点,终点,权值. 要求每个点都走到且不超过两次. 求最小花费. 三.分析: 一道状压 DP 模板题 状压 DP 入门 详见代码. 四.代码实现: #include <set> #include <map> #in...

The___Flash的博客 317

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

HDU 3001 Travelling 状态DP

TSP问题,不懂就是每个点最多访问两次,最少访问一次。 所以,我们可以用三进制来当做状态。 这个题练习了一下三进制……0、1、2 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #inc...

100

[状压dp]HDU3001 Travelling

题意: 走n个城市, m条路, 起点任意, 每个城市走不超过两次, 求最小花费, 不能走输出-1. $1\le n\le 10$ 分析: 每个城市的拜访次数为0 1 2, 所以三进制状压, 先预处理10位(n最大为10)的三进制数 1 int num[12], vis[60005][12]; 2 3 void init() 4 { 5 num[...

aicheng4794的博客 151

Hdu 3001 Travelling 状态DP

题目大意 一次旅游,经过所有城市至少一次,并且任何一座城市访问的次数不能超过两次,求最小费用 每个城市最多访问两次,用状态0,1,2标识访问次数 把城市1~N的状态按照次序连接在一起,就组成了一个三进制数,所有N个城市的状态都能对应到一个三进制数,对一个状态而言,已经访问的城市不关心它的访问的顺序是怎样的,只要知道到达了这个状态,最后访问是哪一个城市就可以进行转移了,...

azwe74872的博客 109

HDU 3001 Travelling 状压DP

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题意:还是环游地图的问题,只不过这回旅行者对自己有着严格的要求,地图上每个点的经过次数不能超过两次。 思路:依然是状压DP问题,根上一道很像,只不过这次对于每个点来说有三种状态,分别是未经过,经过一次,经过两次。所以要用三进制的数来进行状态压缩,这个关键点想明白了其他的和上一道基本一样了。对于我

看曙光 938

[HDU] 3001 Travelling [状压DP]

Problem Description After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best choice!He has decided to visit n cities(he insists on seeing all the cities!And he does not m

chutzpah 348

状压DP hdu 3001 Travelling

【题意】10个点的TSP问题,要求经过每个点不超过两次,所以要用三进制的状态压缩解决这个问题。可以预处理每个状态的第k位是什么。

az12281048的专栏 407

hdu 3001 Travelling (3进制状态dp)

题目:hdu 3001 Travelling  状态方程:dp[state][i] = min(dp[state][i] , dp[state-j][j]+cnt[j][i]) 类似 floyd    // dp[state][i] 表示状态state下,终点为i,遍历所有城市的最短路径 但是由于每个城市最多只能经过两次,所以我们用3进制来表示该城市被经过的次数。 注意:注意重边的存在。

shiyuan的专栏 998

HDU3001Travelling(状压dp)

题目链接 dp[i][j]代表i节点为端点,点集状态为j的最小花费,j用三进制来操作就好了dp[i][j]代表i节点为端点,点集状态为j的最小花费,j用三进制来操作就好了dp[i][j]代表i节点为端点,点集状态为j的最小花费,j用三进制来操作就好了 #include<bits/stdc++.h> using namespace std; typedef long long LL; L...

IDrandom的专栏 309

HDU 3001 Travelling(状压dp)

题目链接:【HDU 3001】 acmer想要将n个城市全都走遍,每个城市最多走2遍,输入n个城市,编号为1~n,m条路(a,b,c:a,b表示这条路连通的城市,c表示a,b之间的路费),问acmer'走遍这n个城市最少的时间,要是不能走遍n个城市,那就输出-1 遇到这种路的问题,最好将重边考虑进去,免得出错 因为最多能走两次,所以用3进制的状压dp做 城市最多是10个,状态最多是3^10

小小西北风 468

HDU3001 Travelling(DP)

TravellingTime Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6388    Accepted Submission(s): 2069Problem DescriptionAfter coding so many days,

松子茶的专栏 884
上一篇: 【二分图匹配】 hdu3605 Escape
下一篇: 【DFS】 hdu3260 Facer is learning to swim
ACM_Ted
博客等级 码龄15年 122粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值