hdu5067
题意 给了一个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的更多相关文章
随机推荐
- kubernetes1.3搭建dns服务
https://xuxinkun.github.io/2016/07/22/kubernetes-dns/
- odoo权限管理
Odoo的权限的核心是权限组(res_groups).对每个权限组,可以设置权限组的菜单表示,对象表示,记录规则表示,字段表示. 1.菜单/对象级别 设置哪些人可以访问哪些菜单/对象,对象的访问权限包 ...
- Python3+Selenium环境配置
一.所需工具 1.Python3.6安装包 2.Selenium安装包(selenium-server-standalone-3.8),如果是Python3的话可以不用下载selenium压缩包,Py ...
- python摸爬滚打之day05----字典
1.字典介绍 1.1 结构: {key1: value1, key2: value2, ....} ,由很多键值对构成. 在字典的key-value(键值对)中, key(键)必须是可哈希(不可变 ...
- 【pyqtgraph】pyqtgraph-鼠标互动
pyqtgraph绘图库官方文档学习-鼠标互动(mouse interaction) 鼠标互动 大多数使用pyqtgraph数据可视化的应用程序都会生成可以使用鼠标进行交互式缩放,平移和配置的小部件. ...
- 解决采集知乎数据时由于账号被封遗漏的账号重爬问题(python代码)
'''一.最笨的办法了################################################################为了处理由于账号被封而没跑到的问题id进行以下两步 ...
- div总在页面最顶端
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- oracle中not in 和 in 的替代写法
-- not in 的替代写法select col from table1 where col not in(select col from table2); select col,table2.co ...
- 林兴爆料小程序很快可以支持各个 App 直接打开小程序
在微信开放平台基础高级产品经理林兴演讲的当场,他爆料了微信小程序一个轰动性新能力:小程序很快可以支持各个 App 直接打开小程序!没错,你没有听错,简单来说,在不久以后,所有的 App 里面都可以看到 ...
- 20180323 DataTable增加DataRow方式优化
1. 我开始开发程序时,很多问题考虑不周期,不断的在改进中 最开始我的写法,创建一个DataTable 的Columns,采用语句 dt2.Columns.Add("ID"); 这 ...