题意 给了一个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. HBase系列文章(转)

    HBase概念学习(一)基本架构 HBase概念学习(二)JAVA API操作概览 HBase概念学习(三)Java API之CRUD(增查改删) HBase概念学习(四)Java API之扫描和过滤 ...

  2. nodejs 学习一 process.execPath 、 __dirname、process.cwd()的区别

    process.execPath node.exe的绝对路径 __dirname 当前执行到__dirname文件文件路径 process.cwd() 启动node命令的目录的绝对路劲

  3. mysql命令行各个参数解释

    mysql命令行各个参数解释 http://blog.51yip.com/mysql/1056.html Usage: mysql [OPTIONS] [database]   //命令方式 -?, ...

  4. 数据库每分钟运行监控SQL

    每1分钟运行一次,记录正在运行的SQL,监控数据 放在ReportServer库的t_WhoIsActive表中,保留最近30天的数据! USE [ReportServer] GO /****** O ...

  5. 014-并发编程-java.util.concurrent之-CountDownLatch

    一.概述 CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,指定的一个或多个线程等待其他线程执行完成后执行. 能够使一个线程等待其他线程完成各自的工 ...

  6. 安卓端数据导出成txt文件

    toExport() { if (this.dataList == false) { this.$createDialog({ type: "alert", content: &q ...

  7. vue-电脑端导出-txt

    // fakeClick(obj) { // var ev = document.createEvent("MouseEvents"); // ev.initMouseEvent( ...

  8. wechat-注意事项

  9. swiper默认第二个且居中

    var mySwiper = new Swiper ('.swiper-bottom', { spaceBetween: 25, freeMode: true, initialSlide :1,//默 ...

  10. [Java in NetBeans] Lesson 11. While Loops

    这个课程的参考视频和图片来自youtube. 主要学到的知识点有:(the same use in C/C++) 1. while loop while(i < max){} will keep ...