2800 送外卖
时间限制: 2 s
空间限制: 256000 KB
题目等级 : 钻石 Diamond
题目描述 Description
有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户的手上。n个不同的客户分别在1~n个编号的城市中。送外卖的从0号城市出发,然后n个城市都要走一次(一个城市可以走多次),最后还要回到0点(他的单位),请问最短时间是多少。现在已知任意两个城市的直接通路的时间。
输入描述 Input Description
第一行一个正整数n (1<=n<=15)
接下来是一个(n+1)*(n+1)的矩阵,矩阵中的数均为不超过10000的正整数。矩阵的i行j列表示第i-1号城市和j-1号城市之间直接通路的时间。当然城市a到城市b的直接通路时间和城市b到城市a的直接通路时间不一定相同,也就是说道路都是单向的。
输出描述 Output Description
一个正整数表示最少花费的时间
样例输入 Sample Input
3
0 1 10 10
1 0 1 2
10 1 0 10
10 2 10 0
样例输出 Sample Output
8
数据范围及提示 Data Size & Hint
1<=n<=15
分类标签 Tags
Floyd 动态规划 状态压缩型DP 图论

/*
状压DP入门题.
我刚入门。。。
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#define MAXN 21
#define MAXM 70001
using namespace std;
int n,dis[MAXN][MAXN],f[MAXM][MAXN],ans=1e9;
void floyed()
{for(int i=0;i<=n;i++)for(int j=0;j<=n;j++)for(int k=0;k<=n;k++)if(i!=j&&j!=k&&i!=k)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);return ;
}
void dp()
{memset(f,127/3,sizeof f);for(int i=0;i<=n;i++) f[1<<i][i]=dis[0][i];for(int s=1;s<=(1<<n+1)-1;s++){for(int i=0;i<=n;i++)if(s&(1<<i)){for(int j=0;j<=n;j++)if(i!=j) f[s|(1<<j)][j]=min(f[s|(1<<j)][j],f[s][i]+dis[i][j]);}}for(int i=1;i<=n;i++) ans=min(ans,f[(1<<n+1)-1][i]+dis[i][0]);
}
int main()
{int x;scanf("%d",&n);for(int i=0;i<=n;i++)for(int j=0;j<=n;j++)scanf("%d",&x),dis[i][j]=x;floyed();dp();printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/nancheng58/p/10067995.html

Codevs 2800 送外卖(状压DP)相关推荐

  1. LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2【状压DP】

    「美团 CodeM 初赛 Round B」送外卖2 内存限制:32 MiB 时间限制:200 ms 题目描述 一 张 n 个 点 m 条 有 向 边 的 图 上 , 有 q 个 配 送 需 求 , 需 ...

  2. 【vijos P1914】【codevs 3904】[NOIP2014 普及组T4]子矩阵(dfs+状压dp)

    P1914子矩阵 Accepted 标签:NOIP普及组2014[显示标签] 描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与 列的相对顺序)被称为原矩阵 ...

  3. Travel(HDU 4284状压dp)

    题意:给n个城市m条路的网图,pp在城市1有一定的钱,想游览这n个城市(包括1),到达一个城市要一定的花费,可以在城市工作赚钱,但前提有工作证(得到有一定的花费),没工作证不能在该城市工作,但可以走, ...

  4. NOJ 1116 哈罗哈的大披萨 【淡蓝】 [状压dp+各种优化]

    我只能说,珍爱生命,远离卡常数的题...感谢陈老师和蔡神,没有他们,,,我调一个星期都弄不出来,,,, 哈罗哈的大披萨 [淡蓝] 时间限制(普通/Java) : 1000 MS/ 3000 MS   ...

  5. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  6. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  7. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  8. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  9. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

  10. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

最新文章

  1. 行为型模型 模版模式
  2. leetcode412
  3. C#后台,执行前台js 脚本
  4. ctypealpha php_php中Ctype函数用法详解
  5. locust+httprunner+Jmeter QQ群微信群问题记录
  6. 摘抄:敏捷测试自动化策略
  7. 暗影精灵3 PLUS 安装黑苹果
  8. 硬件设计-基于热敏电阻的水温检测控制系统(模电课设)
  9. 机器学习 | MATLAB实现GLM广义线性模型参数设定
  10. .lib不是有效的Win32应用程序
  11. 10月最新720全景云系统,可生成小程序+带PC端+安装教程
  12. 王者荣耀服务器维护什么时间结束,3月26日全服不停机更新公告
  13. 时间“照妖镜”のmanic time
  14. Oracle 中的各种读
  15. 抖音短链接v.douyin.com怎么做的
  16. layui 表格内容写temple函数_templet渲染layui表格数据的三种方式
  17. JavaScript----json
  18. ❤️数据可视化❤️:基于Echarts + GeoJson实现的地图视觉映射散点(气泡)组件【15】 - 江西省
  19. Python 实现 周志华 《机器学习》 BP算法(高级版)
  20. 开启安全测试评估赛道,永信至诚发布“数字风洞”产品体系

热门文章

  1. BS与CS的联系与区别【简】
  2. 数据库死锁,导致CPU异常增长
  3. Linux进程管理---task_struct
  4. 【Android】13.3 使用SQLite.NET-PCL访问SQLite数据库
  5. (原)logstash-forwarder + logstash + elasticsearch + kibana
  6. Centos上PostgreSQL9.3的安装
  7. android如何获取系统开机时间
  8. CF1047C Enlarge GCD
  9. BZOJ2565 最长双回文串
  10. python中的引用怎么理解_浅谈动态类型领域中 Python 的变量、对象以及引用