题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067

解题思路:这道题开始想复杂了,想用bfs去求出最短距离,其实没必要,因为题目中没有阻碍关系,所以可以两点之间的最短距离可以用曼哈顿距离。

剩下的就是一个普通的TSP问题了,状态压缩dp

#include<iostream>
#include<cstdio>
#include<cstring>
#define INF 0x3f3f3f
using namespace std;const int maxn = 55;
int mp[maxn][maxn];
int n,m;
int dis[maxn][maxn];
int dp[12][1<<12];struct node
{int x, y;
} f[12];int main()
{while(~scanf("%d %d", &n, &m)){memset(dp,INF,sizeof(dp));int ans = 0;for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){scanf("%d",&mp[i][j]);if(mp[i][j]){f[ans].x = i;f[ans++].y = j;}}}memset(dis, 0, sizeof(dis));for(int i = 0; i < ans; i++)for(int j = 0; j < ans; j++) dis[i][j] = (abs(f[i].x-f[j].x)+abs(f[i].y-f[j].y));for(int i = 0; i < ans; i++) dp[i][(1<<i)] = (abs(f[i].x-1)+abs(f[i].y-1));for(int j = 0; j < (1<<ans); j++)for(int k = 0; k < ans; k++)for(int p = 0; p < ans; p++)if(j != k && (j & (1 << k)) > 0 && (j & (1 << p)) == 0) {dp[p][j|(1<<p)] = min(dp[k][j] + dis[k][p], dp[p][j|(1<<p)]);}int Min = INF;for(int i = 0; i < ans; i++) Min = min(Min, dp[i][(1<<ans)-1]+abs(f[i].x-1)+abs(f[i].y-1));if(Min == INF) Min = 0;printf("%d\n",Min);}return 0;
}

hdu 5067(状态压缩dp)相关推荐

  1. hdu 5713(状态压缩DP)

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

  2. hdu 5418(状态压缩dp+Floyd)

    点击打开链接 解题思路:这道题目和TSP问题很相似,唯一不同的是同一个点可以重复走几次.... 这道题目只有16个顶点,所以很容易想到状态压缩dp,dp[i][j]表示到达顶点i时的状态为j的最小花费 ...

  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. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

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

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

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

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

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

  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. 技术图文:如何利用 C# 爬取 ONE 的交易数据?
  2. debian 9/ ubuntu 添加swap分区
  3. Sublime Text3常用插件以及安装方法(实用)
  4. FPGA In/Out Delay Timing Constaint
  5. java定义全局变量_矮油,你知道什么是 Java变量的作用域 嘛?
  6. 【ASIC设计】ASIC设计流程
  7. 成功解决ValueError: Shape of passed values is (33, 1), indices imply (33, 2)
  8. Leecode19. 删除链表的倒数第 N 个结点——Leecode大厂热题100道系列
  9. Django从理论到实战(part42)--QueryDict对象
  10. AUTOSAR从入门到精通-AUTOSAR PPT介绍
  11. 【原创】我所理解的自动更新-外网web服务器配置
  12. Pytest标记预期失败得测试用例@pytest.mark.xfail()
  13. MySQL学习笔记(七)使用AutoMySQLBackup工具自动备份MySQL数据库
  14. python邮件收发
  15. IE主页简单篡改修复
  16. [GIS教程] 5.3 空间数据组织
  17. Python 数独求解
  18. C++-求积分(面积)
  19. xposed框架安装使用步骤
  20. 中文转自定义英文存储

热门文章

  1. 三星mzvlb1t0hblr是什么固态_三星T7 Touch 1TB移动固态硬盘评测:新奇又安全的加密方式普及?...
  2. 洛谷 5205 【模板】多项式开根
  3. (23/24) webpack实战技巧:如何在webpack环境中使用Json
  4. CentOS7 Zabbix3.4安装
  5. 奥委会主席巴赫与马云对谈:阿里巴巴能将奥运精神带进科技时代
  6. Vim技能修炼教程(16) - 浮点数计算函数
  7. Java Web(5) Spring 下使用Junit4 单元测试
  8. vi编辑器的学习使用(十五)
  9. Management of your data
  10. TIPS FOR LIVING AT CAMBRIDGE