题意:

copy自http://blog.csdn.net/monkey_little/article/details/6637805

有A个村子和B个城堡,村子标号是1~A,城堡标号是A+1~B。马里奥现在位于城堡B,他要带公主回到村子1,他有一双靴子,穿上之后可以不用时间就能从一个地方飞到另外一个地方,但是穿着靴子不能穿过城堡,穿靴子的次数也不能超过 K 次,一次不能超过 L km。求从 A+B 到 1 所用的最短时间。

思路:

首先是利用FLOYD找出任何两点之间的最短路,以及这两点之间能否使用靴子。

使用靴子有两种限制,第一种是距离不能超过L,第二种是中间不能存在城堡。

第一种限制一目了然,第二种限制就要结合FLOYD枚举中间节点的地方下手,加入枚举的中间节点是城堡的话,那么无论这条路多长都不能使用靴子。

然后是图DP。

用dp[i][j]记录从第1个点到第i个点之间使用j次靴子的最短路。

状态转移方程是dp[i][j]=min(dp[k][j-1],dp[k][j]+dis[k][i]).(如果两点之间可以使用靴子的话)

这里的K需要枚举,用到的也是FLOYD里边的DP思想。

上代码

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int A,B,M,L,K;
int pho[][];
int dp[][];
bool canfly[][];
void FLOYD()
{
for(int k=; k<=A+B; k++)
{
for(int i=; i<=A+B; i++)
{
for(int j=; j<=A+B; j++)
{
if(pho[i][k]+pho[k][j]<pho[i][j])
{
pho[i][j]=pho[i][k]+pho[k][j]; }
if(k<=A&&pho[i][j]<=L)
{
canfly[i][j]=canfly[j][i]=;
}
}
}
}
}
void DP()
{
for(int i=; i<=K; i++)
{
dp[][i]=;
}
for(int i=; i<=A+B; i++)
{
dp[i][]=pho[][i];
}
for(int i=; i<=A+B; i++)
{
for(int j=; j<=K; j++)
{
int Min=inf;
for(int w=; w<i; w++)
{
if(canfly[w][i])
Min=min(Min,dp[w][j-]);
Min=min(Min,dp[w][j]+pho[w][i]);
}
dp[i][j]=Min;
}
}
}
int main()
{
int t;
int a,b,c;
scanf("%d",&t);
while(t--)
{
memset(canfly,,sizeof(canfly));
scanf("%d%d%d%d%d",&A,&B,&M,&L,&K);
for(int i=; i<=A+B; i++)
{
for(int j=; j<=A+B; j++)
{
pho[i][j]=inf;
}
pho[i][i]=;
}
for(int i=; i<=M; i++)
{
scanf("%d%d%d",&a,&b,&c);
pho[a][b]=pho[b][a]=c;
if(c<=L)
{
canfly[a][b]=canfly[b][a]=;
}
}
FLOYD();
DP();
printf("%d\n",dp[A+B][K]);
}
}

ZOJ 1232 【灵活运用FLOYD】 【图DP】的更多相关文章

  1. 【Trie图+DP】BZOJ1030[JSOI2007]-文本生成器

    [题目大意] 给出单词总数和固定的文章长度M,求出至少包含其中一个单词的可能文章数量. [思路] 对于至少包含一个的类型,我们可以考虑补集.也就是等于[总的文章可能性总数-不包含任意一个单词的文章总数 ...

  2. Tarjan缩点+DAG图dp

    题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...

  3. HDU 2296 Ring ( Trie图 && DP && DP状态记录)

    题意 : 给出 m 个单词,每一个单词有一个权重,如果一个字符串包含了这些单词,那么意味着这个字符串拥有了其权重,问你构成长度为 n 且权重最大的字符串是什么 ( 若有权重相同的,则输出最短且字典序最 ...

  4. codeforces 677D(分层图dp)

    Codeforces 677D 传送门:https://codeforces.com/contest/677/problem/D 题意: 给你一个n*m的方格图,每个点有一个权值val,现在要求你从坐 ...

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

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

  6. AOJ 2200 Mr. Rito Post Office(Floyd+单调DP)

    [题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2200 [题目大意] 一张图中有陆路和水路,水路必须要有船才能走,当船 ...

  7. [NOIP2016 D1T3]换教室 【floyd+概率dp】

    题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...

  8. zoj 3469 Food Delivery 区间dp + 提前计算费用

    Time Limit: 2 Seconds      Memory Limit: 65536 KB When we are focusing on solving problems, we usual ...

  9. ACM: HDU 5418 Victor and World - Floyd算法+dp状态压缩

    HDU 5418 Victor and World Time Limit:2000MS     Memory Limit:131072KB     64bit IO Format:%I64d & ...

随机推荐

  1. bat判断服务是否启动

    sc query|find "tomcat6" && echo yes || echo nosc query|find "eventlog" & ...

  2. 第十三周翻译:SQL Server安全级别1:SQL Server安全性概述

    SQL Server安全级别1:SQL Server安全性概述 源自:Stairway to SQL Server Security Level 1: Overview of SQL Server S ...

  3. hdu5739Fantasia(多校第二场1006) 割点+逆元

    Fantasia Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Proble ...

  4. 关于MessageBox返回值

    风格设置MB_OK. 此时无论点击确定还是点击X,都返回IDOK.风格设置MB_OKCANCEL,点击确认返回IDOK,点击取消和X都返回IDCANCEL.风格设置MB_YESNO,点击是返回IDYE ...

  5. C++:new的使用

    这里先开个头,以后做详细补充个: new 分配内存失败后会返回空指针:

  6. 【转】解决WPF图片模糊最佳方法(绑定PixelWidth与PixelHeight)

    解决WPF图片模糊最佳方法(绑定PixelWidth与PixelHeight) 转载自:http://www.360doc.com/content/13/1126/09/10504424_332211 ...

  7. freemarker特殊字符输出

    期望输出: #{fefefefwewrerwerwrrrre}${fffqqqwwwwwwwwwwwwwwww} 但是以上解析ftl时候会报错!!!!!!!!!!!! 解决办法: 方法1:使用${r& ...

  8. kubeadm1.14.1 安装Metrics Server

    Metrics API 介绍Metrics-Server之前,必须要提一下Metrics API的概念 Metrics API相比于之前的监控采集方式(hepaster)是一种新的思路,官方希望核心指 ...

  9. bzoj4951 [Wf2017]Money for Nothing

    题目描述 题解: 答案显然是$max((q-p)*(e-d))$ 依然先贪心. 对于工厂,我们倾向于$pi<pj,di<dj$的; 对于买家,我们倾向于$qi>qj,ei>ej ...

  10. 文本三剑客之grep

    接受正则表达式,按行匹配,将会过滤出匹配的所有行 格式: grep   [OPTION]...     PATTERN    [FILE]... 可以看出,grep后可以同时接多个文件 选项OPTIO ...