题目大意:

输入n,有n个地方(1~n)需要送pizza

pizza点为0点

接下来n+1行每行n+1个值

表示 i 到 j 的路径长度

输出从0点到各点送pizza最后回到0点的最短路(点可重复走)

Sample Input

3
0 1 10 10
1 0 1 2
10 1 0 10
10 2 10 0
0

Sample Output

8

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int n,G[][],dp[][];
/// dp[状态][当前点]=路径长度,G[i][j]= i 到 j 的最短路长度
/// 状态 即当该数的二进制为01011时,说明0 1 3点已走过,而2 4没有
void solve()
{
int ed=(<<(n+))-;
/// ed的二进制表示所有点都走过
/* 如 当n=3
1(00001)<<(n+1)=16(10000)
16(10000)-1=15(01111)*/ memset(dp,INF,sizeof(dp));// INF表示不存在
dp[][]=;/// 一开始已经在0点,0点为pizza店
for(int i=;i<=ed;i++)
{
if(!(i&)) continue;
/// 取0点已走过的状态 0点没走过的状态不用考虑 for(int j=;j<=n;j++)
{// 若目前不存在 i状态时位于j点的可能 则忽略
if(dp[i][j]==INF) continue; // 不存在 for(int k=;k<=n;k++) // 枚举所有点
/// 从 i 状态延伸到 k 点已走过的状态
if(j!=k) dp[i|(<<k)][k]= // 则更新
min(dp[i|(<<k)][k],dp[i][j]+G[j][k]);
}
}
printf("%d\n",dp[ed][]);
}
int main()
{
while(~scanf("%d",&n)&&n)
{
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&G[i][j]);
for(int i=;i<=n;i++) /// floyd更新G[][],求各点间的最短路
for(int j=;j<=n;j++)
for(int k=;k<=n;k++)
if(G[j][k]>G[j][i]+G[i][k])
G[j][k]=G[j][i]+G[i][k];
solve();
}
return ;
}

East Central North America 2006 Hie with the Pie /// 状压dp oj22470的更多相关文章

  1. POJ 3311 Hie with the Pie (状压DP)

    dp[i][j][k] i代表此层用的状态序号 j上一层用的状态序号 k是层数&1(滚动数组) 标准流程 先预处理出所有合法数据存在status里 然后独立处理第一层 然后根据前一层的max推 ...

  2. 【鸽】poj3311 Hie with the Pie[状压DP+Floyd]

    题解网上一搜一大坨的,不用复述了吧. 只是觉得网上dp方程没多大问题,但是状态的表示含义模糊.不同于正常哈密顿路径求解,状态表示应当改一下. 首先定义一次移动为从一个点经过若干个点到达另一个点,则$f ...

  3. MPI Maelstrom(East Central North America 1996)(poj1502)

    MPI Maelstrom 总时间限制:  1000ms 内存限制:  65536kB 描述 BIT has recently taken delivery of their new supercom ...

  4. poj 2732 Countdown(East Central North America 2005)

    题意:建一个家庭树,找出有第d代子孙的名字,按照要求的第d代子孙的数从大到小输出三个人名,如果有一样大小子孙数的,就按字母序从小到大将同等大小的都输出,如果小于三个人的就全输出. 题目链接:http: ...

  5. East Central North America Region 2015

    E 每过一秒,当前点会把它的值传递给所有相邻点,问t时刻该图的值 #include <iostream> #include <cstdio> #include <algo ...

  6. Gym-101673 :East Central North America Regional Contest (ECNA 2017)(寒假自训第8场)

    A .Abstract Art 题意:求多个多边形的面积并. 思路:模板题. #include<bits/stdc++.h> using namespace std; typedef lo ...

  7. POJ 1240 Pre-Post-erous! && East Central North America 2002 (由前序后序遍历序列推出M叉树的种类)

    题目链接 问题描述 : We are all familiar with pre-order, in-order and post-order traversals of binary trees. ...

  8. 2017-2018 ACM-ICPC East Central North America Regional Contest (ECNA 2017) Solution

    A:Abstract Art 题意:给出n个多边形,求n个多边形分别的面积和,以及面积并 思路:模板 #include <bits/stdc++.h> using namespace st ...

  9. 2016-2017 ACM-ICPC East Central North America Regional Contest (ECNA 2016) F 区间dp

    Problem F Removal GameBobby Roberts is totally bored in his algorithms class, so he’s developed a li ...

随机推荐

  1. rasa学习(domain.yml、nlu.md、stories.md)(一)

    一. 什么是rasa Rasa是一个用于自动文本和基于语音的对话的开源机器学习框架.了解消息,保持对话以及连接到消息传递通道和API Rasa分为Rasa core和 Rasa nlu两部分: Ras ...

  2. Delphi locate函数

    使用ADO等数据控件的时候,经常会用到 locate 函数,在结果数据集中查询和定位,下面介绍一下: (一) function Locate(const KeyFields: String; cons ...

  3. IDEA 注解开发流程

    IDEA 注解开发流程  分为以下四步  分别是 1 导入依赖 2 配置文件 applicationContext.xml 3 在需要创建对象的类上添加注解 4  测试 详细步骤和代码如下 1 导入依 ...

  4. 「题解」:07.16NOIP模拟T1:礼物

    问题 A: 礼物 时间限制: 1 Sec  内存限制: 256 MB 题面 题目描述 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生 日礼物. 商店里一共有种礼物.夏川每得到一种礼 ...

  5. 凑出和相等的k组数,玄学结论——hdu6616

    [1,n]n个数分成k组,每组n/k个,问k组数和相等的解决方案 首先(1+n)*n/2判定一下是否可以被k整除 n/k为偶数时显然成立 n/k为奇数时每组数前三个很难配,我想了一种玄学的结论,也证明 ...

  6. NX二次开发-UFUN创建球UF_MODL_create_sphere1

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建球 UF_FEATURE_SIGN ...

  7. Python-爬虫-HTTP协议请求之GET请求

    我们在百度搜索时,输入关键词,比如“hello”,URL发生变化,如下: https://www.baidu.com/s?wd=hello&rsv_spt=1&rsv_iqid=0xf ...

  8. Python-docx库的使用

    from docx import Document from docx.shared import Inches document = Document() document.add_heading( ...

  9. 如何在Ubuntu 16.04上安装Nginx

    原文链接https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 介绍 Nginx是世 ...

  10. Docker学习のWindows下如何访问Docker本身的虚拟机

    获取可访问Docker守护程序的容器 docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongalla ...