题目传送门

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相关推荐

  1. 最短Hamilton路径(状压dp)

    链接:https://ac.nowcoder.com/acm/problem/50909 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  2. 最短Hamilton路径-状压dp解法

    最短Hamilton路径 时间限制: 2 Sec  内存限制: 128 MB 题目描述 给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamil ...

  3. AtCoder Grand Contest 012 E Camel and Oases 状压dp

    Description 有一个容量为V的包,n个接水点,坐标分别为x[] 有两种移动方式: 若两个接水点之间的距离不超过此时包的容量v,那么就可以移动 若此时v不等于0,那么可以使v=v/2(下取整) ...

  4. AtCoder Grand Contest 012 E - Camel and Oases 状压dp

    题意 平面上有n个点.初始有V的权值,每次可以从一个点走到与他距离不超过V的点,当V>0时也可以让V/2且到达任意一个点.问从每个点出发能否遍历所有点. n,V<=200000 分析 显然 ...

  5. hdu 4568 Hunter bfs建图+TSP状压DP

    想AC的人请跳过这一段... 题目应该都能读懂.但是个人觉得这题出的很烂,意思太模糊了. 首先,进出次数只能是一次!!这个居然在题目中没有明确说明,让我在当时看到题目的时候无从下手. 因为我想到了这几 ...

  6. P1433 吃奶酪(状压dp)

    洛谷 / 题目列表 / 题目详情 P1433 吃奶酪 提交 23.28k 通过 9.30k 时间限制 1.00s 内存限制 125.00MB 题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问 ...

  7. 【状压DP】哈密顿回路问题

    [状压DP]哈密顿回路问题 lzq同学在我准备午睡的时候发了一道蓝桥杯的题目给我,是哈密顿回路的.第一次看的时候是想DFS+双向搜索优化减小搜索树规模,然后写烂了(如果有大佬用搜索优化写出来了麻烦教教 ...

  8. CH0103最短Hamilton路径 poj2288 Islands and Brigdes【状压DP】

    虐狗宝典学习笔记: 取出整数\(n\)在二进制表示下的第\(k\)位                                                    \((n >> ...

  9. 最短Hamilton路径(哈密顿图,状压dp)

    题目: 给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径. Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次. ...

最新文章

  1. ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡
  2. Python爬虫入门(6):Cookie的使用
  3. 编程之美-数组循环移位
  4. CSS3中的2D和3D转换知识介绍
  5. javascript 等待指定时间_javascript的单线程和任务队列
  6. C++学习之路 | PTA乙级—— 1047 编程团体赛 (20 分)(精简)
  7. 大数据就业前景分析的太到位了【附:1T视频资料】
  8. 从自监督到全监督!Google 提出新损失函数SupCon,准确率提升2%!
  9. EMC相关标准 GB IEC EN对照(持续添加中……)
  10. github上看到的springboot做的后台管理系统,bootdo,适合大家学习入门
  11. Discuz安全之伪装后台,修改后台登陆页面信息
  12. 华为云 搭建 Zabbix监控服务
  13. Laravel CSRF token mismatch
  14. 安卓课程设计之记账本_基于Android个人用户记账本系统课程设计报告
  15. 属兔2013年蛇年运程
  16. 新浪财经50ETF期权和上交所300ETF期权行情接口
  17. linux去掉锁屏密码,使用ADB SHELL清除联想A390t的锁屏密码
  18. 计算机应用会考试题,余杭区2006年职高计算机应用基础会考试题
  19. android mtk camera startpreview,android8.1 mtk camera hal各种操作流程
  20. Problem : [usaco2007 Feb]Lilypad Pond

热门文章

  1. 计算机桌面设置定时,如何设置可以每月自动变化的日历桌面?
  2. Java中的Unsafe
  3. 强健程序员体魄————减脂原理
  4. android xml 设置图片,android 的几种图片效果xml写法
  5. 腾讯x5加载本地html乱码,腾讯X5内核播放器遇到的问题
  6. pythonflask框架_Flask框架
  7. java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析
  8. dao传递类参数 mybatis_Mybatis (ParameterType) 如何传递多个不同类型的参数
  9. HTML+CSS+JS实现 ❤️H5图片列表滑动特效❤️
  10. 《springcloud超级入门》微服务的概念和优缺点《一》