点击打开链接

解题思路:这道题目和TSP问题很相似,唯一不同的是同一个点可以重复走几次。。。。

这道题目只有16个顶点,所以很容易想到状态压缩dp,dp[i][j]表示到达顶点i时的状态为j的最小花费,那么状态方程也很容易推理出来dp[i][j] = min(dp[k][j-1<<i]+map[i][k]);这里注意,由于每一个点可以到达多次,所以这里的map要先用Floyd算法来处理,否则就会出现用还未更新的状态去更新当前的状态,这样很明显两个状态都无法保证是最优的,第一次WA就是卡在这里,后面看了别人的解题报告,才明白了Floyd算法在这里的重要性。。。

AC:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int inf = 0x3f3f3f3f;
int n,m;
int dp[20][1<<17],map[20][20];int main()
{   int t;scanf("%d",&t);while(t--){int w,u,v,bit;scanf("%d%d",&n,&m);memset(map,inf,sizeof(map));memset(dp,inf,sizeof(dp));for(int i = 1; i <= m; i++){scanf("%d%d%d",&u,&v,&w);map[u][v] = min(map[u][v],w);map[v][u] = map[u][v];}for(int k = 1; k <= n; k++)for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)map[i][j] = min(map[i][j],map[i][k] + map[k][j]);bit = 1<<n;dp[1][1] = 0;for(int j = 1; j < bit; j++)for(int k = 1; k <= n; k++)for(int i = 1; i <= n; i++){if(map[i][k] == inf) continue;int tmp = 1 << (i-1);if(j & tmp){if(dp[k][j] != inf){dp[i][j] = min(dp[i][j],dp[k][j] + map[i][k]);}if(dp[k][j-tmp] != inf){dp[i][j] = min(dp[i][j],dp[k][j-tmp] + map[i][k]);}}}printf("%d\n",dp[1][bit-1]);}return 0;
}

hdu 5418(状态压缩dp+Floyd)相关推荐

  1. hdu 5067(状态压缩dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 解题思路:这道题开始想复杂了,想用bfs去求出最短距离,其实没必要,因为题目中没有阻碍关系,所以 ...

  2. hdu 5713(状态压缩DP)

    要进行两次dp, 第一个,dp[i],1<=i<=(1<<n) 其中用i的二进制形式表示已选择的点. dp[i] 用来保存i中的点构成一个连通块,边集多少种可能. 转移方程: ...

  3. Victor and World(spfa+状态压缩dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 Victor and World Time Limit: 4000/2000 MS (Java/ ...

  4. 0x56. 动态规划 - 状态压缩DP(习题详解 × 7)

    目录 Problem A. 最短Hamilton路径 ProblemB. 蒙德里安的梦想 Problem C. Corn Fields Problem D. 小国王 Problem E. 炮兵阵地 P ...

  5. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  6. 状态压缩dp学习小记part2

    继续学习状态压缩的相关知识. 本来准备继续按照上篇博文里提到的那篇论文继续学习,但被矩形完全覆盖虐了回来,决定先做些其他的题增进理解之后再回来做. Zoj 3471 Most Powerful 题目链 ...

  7. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  8. BZOJ1688|二进制枚举子集| 状态压缩DP

    Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...

  9. hdu1074 状态压缩dp+记录方案

    题意:       给你一些作业,每个作业有自己的结束时间和花费时间,如果超过结束时间完成,一天扣一分,问你把n个作业完成最少的扣分,要求输出方案. 思路:       状态压缩dp,记录方案数的地方 ...

最新文章

  1. aspen串联反应怎么输入_【精】反应器(反应釜)的结构和工作原理
  2. jq onclick 定义_从HTML中的onClick属性调用jQuery方法
  3. find文件,tar打包和打包压缩
  4. 选项卡,下拉菜单操做时的页面数据更新,highcharts,d3 结合。
  5. pytorch错误解决 | 错误‘Widget Javascript not detected. It may not be installed or enabled properly.‘
  6. xml,String互转
  7. 深入浅出Docker(二):Docker命令行探秘
  8. jQuery Mobile中滑动块range的data-*选项
  9. (String)、toString()、String.valueOf区别
  10. 美通企业日报 | 阿迪发布星战系列球鞋;安进27亿美元收购百济神州20.5%股份
  11. 荣耀路由器w831刷linux,华为荣耀路由器登录入口:荣耀路由器WS831设置指南【图解】...
  12. 千万数据的分库分表方案
  13. 【情感分析:挖掘观点、情感和情绪】读书笔记-02
  14. HTTPS证书基本概述
  15. c盘是不是越大越好_Windows系统磁盘分区,C盘划分多大最合适?不是越大越好!...
  16. 还原android系统文件夹,如何从Android的内存中恢复文件-万兴恢复专家
  17. 那一场呼啸而过的青春
  18. 使用AndroidStudio进行NDK开发
  19. Python版简易银行管理系统源代码,银行管理系统python代码、银行自助提款系统
  20. c#浅谈反射内存的处理

热门文章

  1. 「神策 2020 数据驱动用户大会」10 月 13 日即将开幕,5 大亮点提前解锁!
  2. 车主无忧:天下武功,唯快不破,神策让我们快人一步
  3. 点点客李新 | 移动社交电商行业案例干货分享
  4. javaFX的控制台实现
  5. 基于struts2拦截器实现用户操作日志记录
  6. Winform开发框架之数据曲线报表
  7. ORACLE REPLACE函数
  8. Android 双击和手势的图片缩放
  9. 微软职位内部推荐-SW Engineer II for WinCE
  10. pthread属性使用(转)