链接:http://vjudge.net/problem/viewProblem.action?id=24902

描述:由城镇、村子和双向边组成的图,从A+B走到1,要求最短路。有K次瞬移的机会,距离不超过L,且不能经过城镇。

思路:一个图上的DP。首先floyd处理,然后做dp。

定义f[i][j]:从1到i还有j次瞬移机会,花费的最少的时间。

状态转移:f[i][j]=min{f[k][j]+dis[k][i],min{f[k][j-1]}}

边界处理:f[1][k]=0 和 f[i][0]=dis[1][i]

我的实现:

 1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5 #define MaxN 120
6 #define INF 100000
7 int f[MaxN][MaxN],dis[MaxN][MaxN];
8 bool OK[MaxN][MaxN];
9 int T,n,A,B,M,L,K;
10 inline void Get_int(int &Ret)
11 {
12 char ch;
13 bool flag=false;
14 for(;ch=getchar(),ch<'0'||ch>'9';)
15 if(ch=='-')
16 flag=true;
17 for(Ret=ch-'0';ch=getchar(),ch>='0'&&ch<='9';Ret=Ret*10+ch-'0');
18 flag&&(Ret=-Ret);
19 }
20 inline void Read_Clean()
21 {
22 Get_int(A);Get_int(B);Get_int(M);Get_int(L);Get_int(K);
23 n=A+B;
24 memset(dis,0x3f,sizeof(dis));
25 memset(OK,false,sizeof(OK));
26 memset(f,0,sizeof(f));
27 int i,x,y,l;
28 for(i=1;i<=M;++i)
29 {
30 Get_int(x);Get_int(y);Get_int(l);
31 dis[x][y]=dis[y][x]=l;
32 if(l<=L)
33 OK[x][y]=OK[y][x]=true;
34 }
35 }
36 void floyd()
37 {
38 int i,j,k;
39 for(k=1;k<=n;++k)
40 for(i=1;i<=n;++i)
41 for(j=1;j<=n;++j)
42 if(dis[i][j]>dis[i][k]+dis[k][j])
43 {
44 dis[i][j]=dis[i][k]+dis[k][j];
45 if(k<=A&&dis[i][j]<=L)
46 OK[i][j]=OK[j][i]=true;
47 }
48 }
49 void DP()
50 {
51 int i,j,k,tmp;
52 for(i=2;i<=n;++i)
53 f[i][0]=dis[1][i];
54 for(i=2;i<=n;++i)
55 {
56 for(j=1;j<=K;++j)
57 {
58 tmp=INF;
59 for(k=1;k<i;++k)
60 {
61 if(OK[k][i])
62 tmp=min(tmp,f[k][j-1]);
63 tmp=min(tmp,f[k][j]+dis[k][i]);
64 }
65 f[i][j]=tmp;
66 }
67 }
68 printf("%d\n",f[n][K]);
69 }
70 int main()
71 {
72 Get_int(T);
73 while(T--)
74 {
75 Read_Clean();
76 floyd();
77 DP();
78 }
79 return 0;
80 }

PS.破题出现了困难,最开始除了暴搜什么思路都没有。之后在暴搜的基础上发现了解题方法。总的来说觉得这道题蛮难的,zyy的路还很长啊~~~

[题解]UVA10269 Adventure of Super Mario的更多相关文章

  1. UVA10269 Adventure of Super Mario(Floyd+DP)

    UVA10269 Adventure of Super Mario(Floyd+DP) After rescuing the beautiful princess, Super Mario needs ...

  2. UVA-10269 Adventure of Super Mario (dijkstra)

    题目大意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径.但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄.这种工具有k个,每个只能使用一次,并且在城市内部不可使用, ...

  3. ZOJ1232 Adventure of Super Mario(DP+SPFA)

    dp[u][t]表示从起点出发,到达i点且用了t次magic boot时的最短时间, 方程如下: dp[v][t]=min(dp[v][t],dp[u][t]+dis[u][v]); dp[v][t] ...

  4. ZOJ1232 Adventure of Super Mario spfa上的dp

    很早之前听说有一种dp是在图上的dp,然后是在跑SPFA的时候进行dp,所以特地找了一题关于在SPFA的时候dp的. 题意:1~a是村庄 a+1~a+b是城堡,存在m条无向边.求由a+b->1的 ...

  5. UVA 10269 Adventure of Super Mario

    看了这里 http://blog.csdn.net/acm_cxlove/article/details/8679230的分析之后自己又按照自己的模板写了一遍,算是对spfa又加深了一步认识(以前真是 ...

  6. UVa 10269 Adventure of Super Mario (Floyd + DP + BFS)

    题意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径.但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄.这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在 ...

  7. ZOJ 1232 Adventure of Super Mario (Floyd + DP)

    题意:有a个村庄,编号为1到a,有b个城堡,编号为a+1到a+b.现在超级玛丽在a+b处,他的家在1处.每条路是双向的,两端地点的编号以及路的长度都已给出.路的长度和通过所需时间相等.他有一双鞋子,可 ...

  8. zoj1232Adventure of Super Mario(图上dp)

    题目连接: 啊哈哈.点我点我 思路: 这个题目是一个图上dp问题.先floyd预处理出图上全部点的最短路,可是在floyd的时候,把可以用神器的地方预处理出来,也就是转折点地方不能为城堡..预处理完成 ...

  9. hdu4417(Super Mario)—— 二分+划分树

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

随机推荐

  1. win+ r 命令

    Win 键+R calc:计算器 notepad:记事本 mspaint:画图 cmd:控制台 control:控制面板 desk.cpl:打开控制面板中的桌面设置 main.cpl:鼠标设置 ine ...

  2. winfrom 双缓冲

    在窗体load函数中 this.DoubleBuffered = true; //控件,需要反射的方式设置 Type dgvType = this.dgv.GetType(); PropertyInf ...

  3. 【刷题-LeetCode】154 Find Minimum in Rotated Sorted Array II

    Find Minimum in Rotated Sorted Array II Suppose an array sorted in ascending order is rotated at som ...

  4. nodejs express异常捕获

    参考链接: http://blog.coinidea.com/web开发/nodejs-1131.html 由于nodejs是非阻塞单进程单线程的,一旦nodejs抛出异常,整个服务就会停掉.服务将会 ...

  5. centos6.6手动安装mysql5.5并配置主从同步

    0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave)   192.168.61.157 centos6.6 1.查看centos系统版本 [ ...

  6. TeXstudio在右边显示预览

    打开预览界面后: 点击查看(View) 选择最后一个:窗口/内嵌(Windowed/Embedded) 就可以了

  7. dubbo-gateway 高性能dubbo网关

    dubbo-gateway dubbo-gateway 提供了http协议到dubbo协议的转换,但[并非]使用dubbo的[泛化]调用(泛化调用性能比普通调用有10-20%的损耗,通过普通异步的调用 ...

  8. linux中cut命令与tr命令

    目录 一:linux中cut命令 1.cut 命令作用 2.参数 3.参数案例解析: 二:tr命令 1.tr命令作用 2.tr命令格式 3.tr命令参数 4.案例解析: 一:linux中cut命令 1 ...

  9. Django class meta

    class Main(models.Model): img = models.CharField(max_length=200) # 图片 name = models.CharField(max_le ...

  10. 【建议收藏】Redis超详细入门教程大杂烩

    写在前边 Redis入门的整合篇.本篇也算是把2021年redis留下来的坑填上去,重新整合了一翻,点击这里,回顾我的2020与2021~一名大二后台练习生 NoSQL NoSQL(NoSQL = N ...