[题解]UVA10269 Adventure of Super Mario
链接: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的更多相关文章
- UVA10269 Adventure of Super Mario(Floyd+DP)
UVA10269 Adventure of Super Mario(Floyd+DP) After rescuing the beautiful princess, Super Mario needs ...
- UVA-10269 Adventure of Super Mario (dijkstra)
题目大意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径.但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄.这种工具有k个,每个只能使用一次,并且在城市内部不可使用, ...
- 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] ...
- ZOJ1232 Adventure of Super Mario spfa上的dp
很早之前听说有一种dp是在图上的dp,然后是在跑SPFA的时候进行dp,所以特地找了一题关于在SPFA的时候dp的. 题意:1~a是村庄 a+1~a+b是城堡,存在m条无向边.求由a+b->1的 ...
- UVA 10269 Adventure of Super Mario
看了这里 http://blog.csdn.net/acm_cxlove/article/details/8679230的分析之后自己又按照自己的模板写了一遍,算是对spfa又加深了一步认识(以前真是 ...
- UVa 10269 Adventure of Super Mario (Floyd + DP + BFS)
题意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径.但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄.这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在 ...
- ZOJ 1232 Adventure of Super Mario (Floyd + DP)
题意:有a个村庄,编号为1到a,有b个城堡,编号为a+1到a+b.现在超级玛丽在a+b处,他的家在1处.每条路是双向的,两端地点的编号以及路的长度都已给出.路的长度和通过所需时间相等.他有一双鞋子,可 ...
- zoj1232Adventure of Super Mario(图上dp)
题目连接: 啊哈哈.点我点我 思路: 这个题目是一个图上dp问题.先floyd预处理出图上全部点的最短路,可是在floyd的时候,把可以用神器的地方预处理出来,也就是转折点地方不能为城堡..预处理完成 ...
- hdu4417(Super Mario)—— 二分+划分树
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
随机推荐
- 44.Prim算法
public static void main(String[] args) { //测试看看图是否创建ok char[] data = new char[]{'A','B','C','D','E', ...
- 论文解读GALA《Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learning》
论文信息 Title:<Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learn ...
- 集合框架-HashSet集合(无序唯一)
1 package cn.itcast.p4.hashset.demo; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 /* ...
- IDEA设置Maven
1,在idea中设置maven,让idea和maven结合使用 idea中内置了maven,一般不使用内置,因为用内置修改maven的设置不方便 使用自己安装的maven,需要覆盖idea中默认的设置 ...
- ubuntu16.04同时使用 pyhton2.7和3.5,并随意切换
ubuntu16.04中默认已经安装了python2.7和python3.5 hanli@ubuntu:/usr/bin$ ls |grep python dh_python2 dh_python3 ...
- linux apache软件安装
安装提示 Linux下,源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install). 过程中用到"configure --prefix=安装 ...
- aws vpc 知识总结(助理级)
一 什么是vpc? Amazon Virtual Private Cloud(Amazon VPC)使您可以将AWS资源启动到您定义的虚拟网络中. 虚拟的云计算. /* 1 默认vpc ? 创建一个具 ...
- 使用gige2500万相机时遇见的问题(条纹以及取图过久)
1.确保网卡支持1g全双工: 2.确保安装了MVTec GigE Vision Streaming Filter(使用halcon接口的情况下) 3.确保机台的杀毒软件开放了相机的网络监控功能
- ApacheCN JavaScript 译文集(二) 20211123 更新
使用 Meteor 构建单页 Web 应用 零.前言 一.制作 Meteor 应用 二.构建 HTML 模板 三.存储数据和处理集合 四.控制数据流 五.使我们的应用与路由通用 六.保持会话状态 七. ...
- CentOS 7下iptables配置添加修改规则端口方法(转)
简介: Linux CentOS 7默认没有安装iptables,默认的防火墙是firewalld,云吞铺子分享CentOS 7系统下iptables安装.iptables规则配置(放行或者禁用端口) ...