157. [USACO Nov07] 奶牛跨栏

157. [USACO Nov07] 奶牛跨栏(点击转到COGS)

输入文件:hurdles.in   输出文件:hurdles.out

时间限制:1 s   内存限制:128 MB

译 by CmYkRgB123

描述

Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏。她们很累,所以她们想消耗最少的能量来跨栏。

显然,对于一头奶牛跳过几个矮栏是很容易的,但是高栏却很难。于是,奶牛们总是关心路径上最高的栏的高度。

奶牛的训练场中有 N (1 ≤ N ≤ 300) 个站台,分别标记为1..N。所有站台之间有M (1 ≤ M ≤ 25,000)条单向路径,第i条路经是从站台Si开始,到站台Ei,其中最高的栏的高度为Hi (1 ≤ Hi ≤ 1,000,000)。无论如何跑,奶牛们都要跨栏。

奶牛们有 T (1 ≤ T ≤ 40,000) 个训练任务要完成。第 i 个任务包含两个数字 Ai 和 Bi (1 ≤ Ai ≤ N; 1 ≤ Bi ≤ N),表示奶牛必须从站台Ai跑到站台Bi,可以路过别的站台。奶牛们想找一条路径从站台Ai到站台Bi,使路径上最高的栏的高度最小。

你的任务就是写一个程序,计算出路径上最高的栏的高度的最小值。

输入

?     行 1: 两个整数 N, M, T

?     行 2..M+1: 行 i+1 包含三个整数 Si , Ei , Hi

?     行 M+2..M+T+1: 行 i+M+1 包含两个整数,表示任务i的起始站台和目标站台: Ai , Bi

输出

?     行 1..T: 行 i 为一个整数,表示任务i路径上最高的栏的高度的最小值。如果无法到达,输出 -1。

输入样例

5 6 3

1 2 12

3 2 8

1 3 5

2 5 3

3 4 4

2 4 8

3 4

1 2

5 1

输出样例

4

8

-1

思路:

同floyd,不过是求长的路

 1 #include<cstdio>
 2 #include<iostream>
 3 #define maxn 12345678
 4 using namespace std;
 5 int n,m,t,s1,e1,h1,a1,b1;
 6 int heig[321][321];
 7 void init()
 8 {
 9     for(int i=1;i<=n;i++)
10       for(int j=1;j<=n;j++)
11         if(i==j) heig[i][j]=0;
12         else heig[i][j]=maxn;
13 }
14 void input()
15 {
16     for(int i=1;i<=m;i++)
17     {
18         scanf("%d%d%d",&s1,&e1,&h1);
19         heig[s1][e1]=h1;
20     }
21 }
22 void floyd()
23 {
24     for(int k=1;k<=n;k++)
25       for(int i=1;i<=n;i++)
26         for(int j=1;j<=n;j++)
27           if(heig[i][j]>heig[i][k] && heig[i][j]>heig[k][j])
28           heig[i][j]=max(heig[i][k],heig[k][j]);
29 }
30 int main()
31 {
32     freopen("hurdles.in","r",stdin);
33     freopen("hurdles.out","w",stdout);
34     scanf("%d%d%d",&n,&m,&t);
35     init();
36     input();
37     floyd();
38     for(int i=1;i<=t;i++)
39     {
40         scanf("%d%d",&a1,&b1);
41         if(heig[a1][b1]!=maxn)
42           printf("%d\n",heig[a1][b1]);
43         else
44           printf("-1\n");
45     }
46     fclose(stdin);fclose(stdout);
47     return 0;
48 }
时间: 2024-12-13 17:48:43

157. [USACO Nov07] 奶牛跨栏的相关文章

SPFA cojs 176. [USACO Feb07] 奶牛聚会

cojs 176. [USACO Feb07] 奶牛聚会 ★☆   输入文件:sparty.in   输出文件:sparty.out   简单对比时间限制:3 s   内存限制:16 MB N(1 ≤ N ≤ 1000)个农场中的每个农场都有一只奶牛去参加位于第X个农场的聚会.共有M (1 ≤ M ≤ 100,000)条单向的道路,每条道路连接一对农场.通过道路i会花费Ti (1 ≤ Ti ≤ 100)的时间. 作为参加聚会的奶牛必须走到聚会的所在地(农场X).当聚会结束时,还要返回各自的农场.

1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏

1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 424  Solved: 272[Submit][Status] Description Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏.她们很累,所以她们想消耗最少的能量来跨栏. 显然,对于一头奶牛跳过几个矮栏是很容易的,但是高栏却很难.于是,奶牛们总是关心路径上最高的栏的高度. 奶牛的训练场

【USACO】奶牛跑步2

P1443 - [USACO]奶牛跑步2 Description FJ的N(1 <= N <= 100,000)头奶牛们又兴高采烈地出来运动了!她们在一条无限长的小路上跑步,每头牛起跑的位置都不同,速度也不尽相同. 道路中划出了若干条跑道,以便她们能快速"超车",同一跑道中的任意两头牛都不会出现在相同的位置.不过FJ不愿让任何一头牛更换跑道或者调整速度,他想 知道如果让牛们跑足T(1 <= T <= 1,000,000,000)分钟的话,至少需要多少条跑道才能满

COGS [USACO Mar07] 奶牛交通

[USACO Mar07] 奶牛交通 农场中,由于奶牛数量的迅速增长,通往奶牛宿舍的道路也出现了严重的交通拥堵问题.FJ打算找出最忙碌的道路来重点整治. 这个牧区包括一个由M (1 ≤ M ≤ 50,000)条单行道路(有向)组成的网络,以及 N (1 ≤ N ≤ 5,000)个交叉路口(编号为1..N),每一条道路连接两个不同的交叉路口.奶牛宿舍位于第N个路口.每一条道路都由编号较小的路口通向编号较大的路 口.这样就可以避免网络中出现环.显而易见,所有道路都通向奶牛宿舍.而两个交叉路口可能由不

BZOJ 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏( floyd )

直接floyd.. ---------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define rep( i , n ) for( int i = 0 ;  i < n ; ++i ) #define clr( x

BZOJ 1641 USACO 2007 Nov. Cow Hurdles 奶牛跨栏

[题解] 弗洛伊德.更新距离的时候把$f[i][j]=min(f[i][j],f[i][k]+f[k][j])$改为$f[i][j]=min(f[i][j],max(f[i][k],f[k][j]))$. #include<cstdio> #include<algorithm> #include<cstring> #define N (400) #define rg register using namespace std; int n,m,t,a[N][N]; inl

BZOJ 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏

Description Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏.她们很累,所以她们想消耗最少的能量来跨栏. 显然,对于一头奶牛跳过几个矮栏是很容易的,但是高栏却很难.于是,奶牛们总是关心路径上最高的栏的高度. 奶牛的训练场中有 N (1 ≤ N ≤ 300) 个站台,分别标记为1..N.所有站台之间有M (1 ≤ M ≤ 25,000)条单向路径,第i条路经是从站台Si开始,到站台Ei,其中最高的栏的高度为Hi (1 ≤ Hi ≤ 1,000,000)

cogs 762. [USACO Open09] 奶牛队列

★   输入文件:cline.in   输出文件:cline.out   简单对比时间限制:1 s   内存限制:128 MB 农夫约翰有N头牛,编号依次为1-N,他正在把这些牛排成一队,队伍中开始是没有牛的,随着时间推移,牛儿一个一个地从左端或右端加入到队伍中来.令人烦心的是,随时会有一些牛从左端或右端离开队伍溜向草场. FJ正费劲地给牛排队,请你帮帮他. 奶牛按1-N的顺序入队,牛一旦离队就再也不会回来了,你的程序将处理给定的S(1 <= S <= 100,000)个输入指令,每一个指令占

TYVJ P1023 奶牛的锻炼 Label:dp

背景 USACO 描述 奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息.若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0).若她在第i分钟休息,则疲倦程度减少1.无论何时,疲倦程度都不能超过M.另外,一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步.在第N分钟后,她的疲倦程度必须为0. 输入格式 第一行,两个整数,代表N和M.接下来N行,每行一个整数,代表D_i. 输出格式 Bessie想知道,她最多能跑的距离. 测试样例1 输入 5 2 5 3 4 2 10