Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925
题目传送门
Hamilton路径的定义:从0(起点)到n-1(终点)不重不漏地经过每个点恰好一次。
由于数据范围非常小,考虑状压。如NOIP2017宝藏一题,把状态压缩设为n个点是否已到达的二进制数。1表示到达过,0表示没到达过。
设计状态$f[i][j]$表示当前状态为i,目前处于点j的最短路径。在每一个状态下,我们枚举当前在哪里,并枚举当前在的这个地方是由哪个状态转移过来的。(即枚举的这两个地方其实都已经经过了。)那么之前的状态可以表示成$i xor (1<<j)$。
则有转移$dp[i][j]=min(dp[i][j],dp[(1<<j)xor i][k]+w[k][j])$;
Code
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 5 using namespace std; 6 7 int n; 8 int w[50][50],dp[1500000][30]; 9 10 int main() 11 { 12 scanf("%d",&n); 13 memset(w,0x3f,sizeof(w)); 14 for(int i=0;i<n;i++) 15 for(int j=0;j<n;j++) 16 { 17 int z=0; 18 scanf("%d",&z); 19 w[i][j]=w[j][i]=min(w[i][j],z); 20 } 21 memset(dp,0x3f,sizeof(dp)); 22 dp[1][0]=0; 23 for(int i=1;i<(1<<n);i++) 24 for(int j=0;j<n;j++) 25 { 26 if(!((i>>j)&1)) continue; 27 for(int k=0;k<n;k++) 28 { 29 if(!((i>>k)&1)) continue; 30 dp[i][j]=min(dp[i][j],dp[(1<<j)^i][k]+w[k][j]); 31 } 32 } 33 printf("%d\n",dp[(1<<n)-1][n-1]); 34 return 0; 35 }
View Code
* 细节:用邻接矩阵存图的时候需要开始赋成很大。
节点标号是0~n-1,与二进制的习俗相似。所以不用注意很多
转载于:https://www.cnblogs.com/nopartyfoucaodong/p/9682851.html
Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925相关推荐
- 最短Hamilton路径(状压dp)
链接:https://ac.nowcoder.com/acm/problem/50909 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 最短Hamilton路径-状压dp解法
最短Hamilton路径 时间限制: 2 Sec 内存限制: 128 MB 题目描述 给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamil ...
- AtCoder Grand Contest 012 E Camel and Oases 状压dp
Description 有一个容量为V的包,n个接水点,坐标分别为x[] 有两种移动方式: 若两个接水点之间的距离不超过此时包的容量v,那么就可以移动 若此时v不等于0,那么可以使v=v/2(下取整) ...
- AtCoder Grand Contest 012 E - Camel and Oases 状压dp
题意 平面上有n个点.初始有V的权值,每次可以从一个点走到与他距离不超过V的点,当V>0时也可以让V/2且到达任意一个点.问从每个点出发能否遍历所有点. n,V<=200000 分析 显然 ...
- hdu 4568 Hunter bfs建图+TSP状压DP
想AC的人请跳过这一段... 题目应该都能读懂.但是个人觉得这题出的很烂,意思太模糊了. 首先,进出次数只能是一次!!这个居然在题目中没有明确说明,让我在当时看到题目的时候无从下手. 因为我想到了这几 ...
- P1433 吃奶酪(状压dp)
洛谷 / 题目列表 / 题目详情 P1433 吃奶酪 提交 23.28k 通过 9.30k 时间限制 1.00s 内存限制 125.00MB 题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问 ...
- 【状压DP】哈密顿回路问题
[状压DP]哈密顿回路问题 lzq同学在我准备午睡的时候发了一道蓝桥杯的题目给我,是哈密顿回路的.第一次看的时候是想DFS+双向搜索优化减小搜索树规模,然后写烂了(如果有大佬用搜索优化写出来了麻烦教教 ...
- CH0103最短Hamilton路径 poj2288 Islands and Brigdes【状压DP】
虐狗宝典学习笔记: 取出整数\(n\)在二进制表示下的第\(k\)位 \((n >> ...
- 最短Hamilton路径(哈密顿图,状压dp)
题目: 给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径. Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次. ...
最新文章
- ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡
- Python爬虫入门(6):Cookie的使用
- 编程之美-数组循环移位
- CSS3中的2D和3D转换知识介绍
- javascript 等待指定时间_javascript的单线程和任务队列
- C++学习之路 | PTA乙级—— 1047 编程团体赛 (20 分)(精简)
- 大数据就业前景分析的太到位了【附:1T视频资料】
- 从自监督到全监督!Google 提出新损失函数SupCon,准确率提升2%!
- EMC相关标准 GB IEC EN对照(持续添加中……)
- github上看到的springboot做的后台管理系统,bootdo,适合大家学习入门
- Discuz安全之伪装后台,修改后台登陆页面信息
- 华为云 搭建 Zabbix监控服务
- Laravel CSRF token mismatch
- 安卓课程设计之记账本_基于Android个人用户记账本系统课程设计报告
- 属兔2013年蛇年运程
- 新浪财经50ETF期权和上交所300ETF期权行情接口
- linux去掉锁屏密码,使用ADB SHELL清除联想A390t的锁屏密码
- 计算机应用会考试题,余杭区2006年职高计算机应用基础会考试题
- android mtk camera startpreview,android8.1 mtk camera hal各种操作流程
- Problem : [usaco2007 Feb]Lilypad Pond
热门文章
- 计算机桌面设置定时,如何设置可以每月自动变化的日历桌面?
- Java中的Unsafe
- 强健程序员体魄————减脂原理
- android xml 设置图片,android 的几种图片效果xml写法
- 腾讯x5加载本地html乱码,腾讯X5内核播放器遇到的问题
- pythonflask框架_Flask框架
- java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析
- dao传递类参数 mybatis_Mybatis (ParameterType) 如何传递多个不同类型的参数
- HTML+CSS+JS实现 ❤️H5图片列表滑动特效❤️
- 《springcloud超级入门》微服务的概念和优缺点《一》