• P1003 越野跑【tyvj】


    /*===========================================================
    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
    ",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.

  • 相关阅读:
    selenium-web自动化,常用api
    jmeter利用bean shell加密解密方法
    http请求属性说明(基础篇)
    移动端候选人面试要点
    CssSelector定位详解
    下载zip文件
    BeanShell生成随机中文字符
    BeanShell生成随机字符
    CentOS 7.2安装Oracle19C
    Centos7.4部署onlyoffice文档在线编辑服务器
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3831943.html
Copyright © 2020-2023  润新知