先Floyd预处理出两点间最短路径,然后状压dp,dp[s][i]表示状态为s的点都遍历了,停在i的最小时间。枚举一个j去转移就好了。然后处理出f[s],表示遍历了s状态的点的最小花费。然后枚举A遍历了哪些点,B必须遍历了其余点与1.取最大值就是最慢的,更新答案即可。复杂度O(2^n *n*n)注意初值只能给dp[1][1]=0.一开始在其他点都是非法的。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define N 20
inline ll read(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,m,dp[300000][N],mp[N][N],bin[N],f[300000],ans=inf;//dp[s][i],状态为s的点都便利了,现在在i的最小时间
int main(){
//  freopen("transport.in","r",stdin);n=read();m=read();memset(mp,inf,sizeof(mp));while(m--){int x=read(),y=read();mp[x][y]=mp[y][x]=read();}for(int i=1;i<=n;++i) mp[i][i]=0;for(int k=1;k<=n;++k)for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);memset(dp,inf,sizeof(dp));bin[0]=1;memset(f,inf,sizeof(f));for(int i=1;i<=n;++i) bin[i]=bin[i-1]<<1;dp[1][1]=0;for(int s=1;s<bin[n]-1;++s)for(int i=1;i<=n;++i){if(dp[s][i]==inf) continue;for(int j=1;j<=n;++j){if(s&bin[j-1]||mp[i][j]==inf) continue;dp[s|bin[j-1]][j]=min(dp[s|bin[j-1]][j],dp[s][i]+mp[i][j]);}}for(int s=0;s<=bin[n]-1;++s)for(int j=1;j<=n;++j) f[s]=min(f[s],dp[s][j]);for(int s=0;s<=bin[n]-1;++s){if(!(s&1)) continue;int res=max(f[s],f[(bin[n]-1-s)|1]);ans=min(ans,res);}printf("%d\n",ans);return 0;
}

bzoj3055 礼物运送(Floyd+状压dp)相关推荐

  1. bzoj 3055礼物运送 floyed + 状压DP

    bzoj 3055: 礼物运送 floyed first 设f[i][S]表示取到了S集合中的所有点(不一定是经过的所有点),最后停在了i的最优值. 初始就f[i][{i}] = dis[1][i] ...

  2. Hie with the Pie(Floyd+状压dp)

    描述 传送门:poj-3311  The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as ...

  3. hdu 5418 Victor and World (floyd+状压dp)

    题目大意:可重复访问顶点的TSP问题. 解法:点击打开链接 坑点:n=1 #include<iostream> #include<cstdio> #include<cst ...

  4. Hie with the Pie(Floyd 状压DP)

    POJ 3311 Hie with the Pie 题目大意 一个披萨店要请司机来送披萨,这家店最多接受10个订单,由于预算的问题,只能雇佣一名司机,要求用最短的时间,从披萨店出发送完最后再回到披萨店 ...

  5. 状压dp个人刷题记录

    目录 一.普通型 蒙德里安的梦想 题意: 思路: code: #2153. 「SCOI2005」互不侵犯 题意: 思路: code: P1879 [USACO06NOV]Corn Fields G 题 ...

  6. 【LDU】 Week2自测 Disney‘s FastPass | 状压dp、Floyd

    这题是hdu 4114... 跟着19的打了打周测,发现个好题 写了写还wa了一发 题目大意: 给出n个点,k个要旅游的景点,然后给出k个景点的信息(位置,t,ft,门票所在地点),t于ft表示,如果 ...

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

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

  8. 【状压DP】吃货JYY(luogu 6085)

    正题 luogu 6085 题目大意 给你一个无向图,其中有一些边是必须走的,问你从1开始走,经过所有必须走的边,然后回到1的最短路径 解题思路 n很小,可以先用Floyd跑出两个点之间的最短路 然后 ...

  9. 动态规划 —— 状压 DP

    [概述] 通常将以一个集合内的元素信息作为状态且状态总数为指数级别的动态规划称为状态压缩动态规划. 其是一类以集合信息为状态的特殊的动态规划问题,主要有传统集合动态规划与基于连通性状态压缩的动态规划两 ...

最新文章

  1. 苹果公司投资1000万美元用于无温室气体铝冶炼
  2. 计算机入门新人必学,异世修真人怎么玩?新手快速入门必备技巧
  3. 如何高效便捷的画出炫酷神经网络图
  4. union distinct_当面试官问你UNION 和UNION ALL之间的区别时该怎么答?
  5. Tegra X1性能解析
  6. 材料真的是朝阳行业吗?
  7. python 三目运算符
  8. antimalware service executable占用内存_解决 vue 项目运行过程中内存泄漏问题
  9. 学习bcgcontrol1
  10. Quart2D文字图像绘制
  11. 微信小程序的下载安装
  12. 「HNOI 2009」图的同构记数
  13. PC是夕阳行业?你们图样图森破
  14. c语言汇率转换代码_拜求c语言编写的人民币大小写转换的代码!
  15. 华为模拟器eNSP配置DHCP自动分配IP地址
  16. Html5 视频播放之video标签的使用(包含注意事项,例如视频无法正常展示,只显示音频等问题)
  17. java trim 空指针_trim()空指针异常问题!
  18. css如何让文字不换行,css如何让文字不换行显示?
  19. Git项目库删除找回
  20. iOS-关于M1芯片可以下载APP使用问题

热门文章

  1. Data too long for column ‘xxx‘ at row 1解决方法
  2. 浏览器输入baidu.com加载的过程是什么,听完我的回答和尚摇了摇头,就这?
  3. 顿可集团线上订货平台开发案例
  4. 前端外行的微信小程序瞎折腾之旅
  5. 神策数据微信小程序 SDK 功能介绍 | 数据采集
  6. Arch Linux/其他 Linux 下给 Link2/LPC-Link2 调试器刷 CMSIS-DAP 和 J-Link 固件
  7. 针对17joys控制器的扩展
  8. 战胜市场的投资策略方向
  9. ck6.8整合php,WordPress整合ckplayer X和ckplayer 6.8的最新完美代码
  10. 西门子PLC中STL语言状态字