/*=========================================================== P1003 越野跑 描述 Description 为了能在下一次跑步比赛中有好的发挥,贝茜在一条山路上开始了她的训练 。贝茜希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定: 奶牛独自进山的时间不得超过M秒(1 <= M <= 10,000,000)。 整条山路被贝茜划分成T个长度相同的小段(1 <= T <= 100,000),并且, 贝茜用S_i表示第i个小段的路况。S_i为u,f,d这3个字母之一,它们分别表示 第i个小段是上坡、平地,或是下坡。 贝茜要花U秒(1 <= U <= 100)才能跑完一段上坡路,跑完一段平地的耗时是 F秒(1 <= F <= 100),跑完一段下坡路要花D秒(1 <= D <= 100)。注意,沿山路 原路返回的时候,原本是上坡路的路段变成了下坡路,原本是下坡路的路段变成 了上坡路。 贝茜想知道,在能按时返回农场的前提下,她最多能在这条山路上跑多远。 输入格式 InputFormat 输入格式: * 第1行: 5个用空格隔开的整数:M,T,U,F,以及D * 第2..T+1行: 第i+1行为1个字母S_i,描述了第i段山路的路况 输出格式 OutputFormat 输出格式: * 第1行: 输出1个整数,为贝茜在按时回到农场的前提下,最多能跑到多远 样例输入 SampleInput 13 5 3 2 1 u f u d f 样例输出 SampleOutput 3 数据范围和注释 Hint 输入说明: 贝茜跑步的最大耗时为13秒(这么短...),她跑步的山路一共被划成5段。 贝茜跑完一段上坡路的耗时为3秒,平地为2秒,下坡路为1秒。山路各段的走向 如下图所示: _/\_ / 输出说明: 贝茜跑完山路的前3段,然后返回,总耗时为3 + 2 + 3 + 1 + 2 + 1 = 12秒,只比她能在外面呆的时限少1秒。如果她跑得更远,就无法按时回到农场。 =============================================================*/
这个题目关键是要注意分析题目的输出说明。有去程必须有回程。去程和回程可以同时计算所耗时间。
C、c ++输入字符有天生的bug,这里考虑使用输入字符串的方式呵呵呵
1 #include<stdio.h> 2 int main() 3 { 4 long M,T,U,F,D,i; 5 char ch[5]; 6 long res=0; 7 long temp; 8 freopen("p1002-3.in","r",stdin); 9 scanf("%ld%ld%ld%ld%ld",&M,&T,&U,&F,&D); 10 getchar(); 11 for(i=0;i<T;i++) 12 { 13 scanf("%s",ch); 14 getchar(); 15 if(ch[0]==‘u‘||ch[0]==‘d‘) 16 { 17 temp=M-U-D; 18 if(temp>=0) 19 { 20 res++; 21 M=M-U-D; 22 } 23 else break; 24 } 25 else // if(ch==‘f‘) 26 { 27 temp=M-F-F; 28 if(temp>=0) 29 { 30 res++; 31 M=M-F-F; 32 } 33 else break; 34 } 35 } 36 printf("%ld\n",res); 37 return 0; 38 }
给几个数据测试
200 28 29 10 8 f d u u u f d u u f d f f u u u f f d d d u d f f f f u
50 11 14 6 5 u f f u d f u f d d u
输出分别是6和3.
P1003 越野跑【tyvj】,布布扣,bubuko.com
原文:http://www.cnblogs.com/huashanqingzhu/p/3831943.html