题意 给了一个n*m的网格 然后一台挖掘机从(0,0) 这个位置出发,收集完全部的石头回到(0,0)挖掘机可以有无限的载重 用旅行商处理 dp[k][i] 表示在这个集合中最后到达i的最小距离,用集合上的dp, dp[S|(1<<j)][j]=min(dp[S|(1<<j)][j],d[S][i]+dist[i][j]);

#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
#include <cmath>
using namespace std;
const int INF = **;
struct point{
int x,y;
}P[];
int dist[][];
int dp[<<][];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==){
int num=;
for(int i=; i<n; ++i)
for(int j=; j<m; ++j){
int a;
scanf("%d",&a);
if(a>){
P[num].x=i;
P[num].y=j;
++num;
}
}
if(num==){
printf("0\n"); continue;
}
for(int i=; i<num; ++i)
for(int j=; j<num; ++j)
dist[i][j]=dist[j][i]=abs(P[i].x-P[j].x)+abs(P[i].y-P[j].y);
for(int s=; s<<<num; ++s)
fill(dp[s],dp[s]+num,INF);
dp[][]=;
for(int i=; i<num; ++i)
dp[<<i][i]=abs(P[i].x)+abs(P[i].y);
for(int S=; S<<<num; ++S){
for(int i=; i<num; ++i)
if( S&(<<i) ){
for(int j=; j<num; ++j)
dp[S|(<<j)][j]=min(dp[ S|(<<j)][j],dp[S][i]+dist[i][j]);
}
}
int ans=INF;
for(int i=; i<num; ++i)
ans=min(ans,dp[(<<num)-][i]+abs(P[i].x)+abs(P[i].y));
printf("%d\n",ans);
} return ;
}

d

hdu5067的更多相关文章

随机推荐

  1. 嵌套表用法详解(PLSQL)

    嵌套表 嵌套表是一种类似于索引表的结构,也可以用于保存多个数据,而且也可以保存复合类型的数据 嵌套表指的是一个数据表定义事同时加入了其他内部表的定义,这一概念是在oracle 8中引入的,它们可以使用 ...

  2. LeetCode 136 Single Number 解题报告

    题目要求 Given a non-empty array of integers, every element appears twice except for one. Find that sing ...

  3. base64简单使用

    加密: import base64 import random str ="aqwertyuiopasdfghjklzxcvbnm963.0852741,.;'" a = '人生苦 ...

  4. 20165336 2017-2018-2《Java程序设计》课程总结

    每周作业链接汇总 我期望的师生关系:对师生关系的看法 学习基础和C语言基础调查:关于学JAVA与C的调查 Linux安装及学习:Linux的安装 第一周学习总结:认识学习JAVA 第二周学习总结:JA ...

  5. POJ2431 Expedition 贪心

    正解:模拟费用流 解题报告: 先放个传送门鸭,题目大意可以点Descriptions的第二个切换成中文翻译 然后为了方便表述,这里强行改一下题意(问题是一样的只是表述不一样辣,,, 就是说现在在高速公 ...

  6. linux中按照指定内容查找文件

    grep -rnRi 指定的内容 * | awk -F":" '{print $1}' 解释: grep 查找文件内容 -r 表示递归查找 -n 表示显示行号 -R 表示查找所有文 ...

  7. 启动Jmeter4.0 后弹出命令窗口提示信息是什么意思?

    启动Jmeter4.0 后弹出命令窗口提示信息: =========================================================================== ...

  8. 解决ios10以上点击缩放的问题

    禁止ios10以上点击缩放,代码如下: <script> window.onload=function () { document.addEventListener('touchstart ...

  9. [py]Python使用UUID库生成唯一ID(uuid模块)

    https://www.cnblogs.com/dkblog/archive/2011/10/10/2205200.html uuid介绍 UUID是128位的全局唯一标识符,通常由32字节的字符串表 ...

  10. Let Encrypt延期(转自虞大胆的叽叽喳喳)

    前几天发现我的 letsencrypt 通配符证书快过期了,想为这两张证书续期(renew). 首先运行命令查看我的所有证书: $ certbot-auto certificates 其中证书名 si ...