这题是hdu 4114...

跟着19的打了打周测,发现个好题

写了写还wa了一发

题目大意:

给出n个点,k个要旅游的景点,然后给出k个景点的信息(位置,t,ft,门票所在地点),t于ft表示,如果参观这个经典使用门票则需要ft时间,否则需要t时间。问参观完所有经典并且返回来的最短路。

题目思路:

经典套路状压dp了,类似于状压dp求哈密尔顿回路

由于涉及到两个状态,所以设状态:i,k分别为门票的状态二进制 与 访问状态的二进制

然后就直接进行状压dp就好了,注意的是最短路最好提前处理好,点数比较小Floyd就好了

Code:

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
using namespace std;
const int N=1e3+15;
typedef long long ll;
const ll INF = 1e18;
double PI=acos(-1.0);
inline bool read(ll &num)
{char in;bool IsN=false;in=getchar();if(in==EOF) return false;while(in!='-'&&(in<'0'||in>'9')) in=getchar();if(in=='-'){ IsN=true;num=0;}else num=in-'0';while(in=getchar(),in>='0'&&in<='9'){num*=10,num+=in-'0';}if(IsN) num=-num;return true;}
const int maxn=1e6+5;
ll n,m,p;
ll mp[55][55];
ll dp[55][1<<8][1<<8];
ll f[55];
int pos[55],ft[55],t[55];
void _inint(){for(int i=0;i<55;i++){for(int k=0;k<55;k++){if(i==k) mp[i][k] = 0;else mp[i][k] = INF;}}for(int i=0;i<55;i++){for(int k=0;k<1<<8;k++){///游览状态for(int j=0;j<1<<8;j++){dp[i][k][j] = INF;}}}memset(f,0,sizeof(f));dp[1][0][0] = 0;///初始状态
}
int main()
{int cas = 0;int T;scanf("%d",&T);while(T--){_inint();read(n);read(m);read(p);for(int i=1;i<=m;i++){ll x,y,w;read(x);read(y);read(w);mp[x][y] = min(mp[x][y],w);mp[y][x] = min(mp[y][x],w);}for(int i=1;i<=n;i++)for(int k=1;k<=n;k++)for(int j=1;j<=n;j++)mp[k][j] = min(mp[k][i]+mp[i][j],mp[k][j]);for(int i=0;i<p;i++){int x;scanf("%d%d%d%d",&pos[i],&t[i],&ft[i],&x);while(x--){ll y;read(y);f[y] |= 1<<i;}}ll ans = INF;for(int i=0;i<(1<<p);i++){///访问景点for(int k=0;k<(1<<p);k++){///门票for(int j=1;j<=n;j++){if(dp[j][i][k] != INF){if(i == ((1<<p)-1)) ans = min(ans,dp[j][i][k]+mp[j][1]);for(int aim=0;aim<p;aim++){if((i&(1<<aim)) == 0){///没去过if(k&(1<<aim)) ///有门票dp[pos[aim]][i^(1<<aim)][k|f[pos[aim]]] = min(dp[pos[aim]][i^(1<<aim)][k|f[pos[aim]]],dp[j][i][k]+mp[j][pos[aim]]+ft[aim]);else dp[pos[aim]][i^(1<<aim)][k|f[pos[aim]]] =min(dp[pos[aim]][i^(1<<aim)][k|f[pos[aim]]],dp[j][i][k]+mp[j][pos[aim]]+t[aim]);}}///不去游玩 到处跑for(int aim=1;aim<=n;aim++){dp[aim][i][k|f[aim]] = min(dp[aim][i][k|f[aim]],dp[j][i][k]+mp[aim][j]);}}}}}printf("Case #%d: %lld\n",++cas,ans);}return 0;
}

【LDU】 Week2自测 Disney‘s FastPass | 状压dp、Floyd相关推荐

  1. hdu 4114 Disney's FastPass 状压dp

    点击打开链接 题意: 游戏园里有N个区域,有M条边连接这N个区域,有K个要访问的景点.对于每个景点告诉你这个景点所在的区域,要访问这个景点需要等待一定时间,如果没有FastPass,等待时间有Ti,否 ...

  2. HDU 4114 Disney's FastPass(状压dp)

    题意就是给你一些点,有的地方有景区,有的地方有某些景点的优先票,拿优先票去景点和不拿的时间不一样.问从地点1出发去所有景点再回来的最短时间. 得把景点,景区进行状压.即dp[i][j][k]代表参观景 ...

  3. 【校内互测】Sunshine’s string(merge) (状压dp)

    Sunshine's string(merge.cpp) [问题描述] 无聊的Sunshine大爷开始研究字符串.他找来了一个长度为n的01字符串,并制定了一些规则:每次可以将k个字符合并,得到一个新 ...

  4. 状压DP学习总结 (详解,适合没状压dp基础的人学习,还在更新中,,,,)

    本次博客,主要是给学弟学妹们讲解一下状压dp,不适合有基础的同学观看,可能会浪费时间,因为偏基础 先来最简单的一个吧   http://acm.hdu.edu.cn/showproblem.php?p ...

  5. 刷题周记(九)——#状压DP:最短Hamilton路径、小国王(互不侵犯)、玉米田(Corn Fields G)、愤怒的小鸟、吃奶酪、炮兵阵地、宝藏 #区间DP:清空字符串#DP:关灯问题II

    文章目录 --2020年12月20日(周日)------------------ 状压DP 一.最短Hamilton路径(模板题) 二.玉米田(P1879 [USACO06NOV]Corn Field ...

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

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

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

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

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

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

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

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

最新文章

  1. mysql带有OR关键字的多条件查询
  2. Authentication vs. Authorization 验证与授权[整理]
  3. python各种读取图像方法
  4. mysql 删除多余帐号_安装完mysql数据库后的优化(删除多余用户和数据库)
  5. leetcode 476. Number Complement | 476. 数字的补数(位运算)
  6. 图论--网络流最大流问题
  7. HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例
  8. dynamic programming 学习
  9. L1-003. 个位数统计-PAT团体程序设计天梯赛GPLT
  10. 做任务云闪付为什么要实名认证_ISO9001质量体系认证:为什么要做?如何去做?...
  11. Kotlin从入门到放弃(三)——协程
  12. mysql数据类型及占用字节数
  13. 厦门大学继续教育计算机科学毕业难吗,厦门大学工资待遇
  14. Word文件没有保存怎么找回来?恢复文件
  15. 牛顿柯特斯公式及复合形式、龙贝格求积公式,高斯勒让德求积公式
  16. 手机开热点但是电脑一直连接不上_电脑连不上wifi,手机可以连上。手机开热点,电脑可以连上。这是怎么回事,电脑就一直循环连接那个w...
  17. android 5.1一键root工具箱,s大师一键root下载
  18. QLabel控件实现圆形头像显示
  19. 保险精算--第13周作业
  20. (附源码)基于PHP下的大学生校园交流论坛的设计与实现 毕业设计101634

热门文章

  1. C语言排列组合(函数
  2. linux下文件编码格式转换方法
  3. 死锁避免——银行家算法
  4. WIN7卸载IE11回复IE8的方法
  5. html5的水墨画,PR怎么做水墨画效果
  6. 图片怎么转化为pdf格式文件?图片如何转变为pdf格式?
  7. 如何用几何画板把圆奇数等分
  8. html th中加斜杠,vue element 表头添加斜线
  9. Why That Big Meal You Just Ate Made You Hungry
  10. DFS(深度优先搜索算法)入门