zoukankan      html  css  js  c++  java
  • F

    题目链接:https://vjudge.net/contest/168648#problem/F

    题目大意:给出爬山的总时间和记录了海拔的时间,求能达到的最大高度

    题解:有两个重要的式子:

    1.第一天的海拔:假设给出的第一个数据为a,b,从第一天到a天每天都下降1m,则第一天为b+a-1;

    2.pre_a和a天之间的最大距离x,根据题目所给的条件可列出式子——((x-ha)+(x-hpre_a)<=a-pre_a)

    得出x=(a-pre_a+ha+hpre_a)/2;

    有了这个两个式子再一步步找最大的ans就行了

    code:

    #include <stdio.h>
    #include <algorithm>
    #include <math.h>

    using namespace std;

    int main()
    {
     int n,m;
     int a,b;
     int pre_a,pre_b;
     int ans;
     int flag=1;
     scanf("%d%d",&n,&m);
     scanf("%d%d",&a,&b);
     ans=b+a-1;
     pre_a=a;
     pre_b=b;
     for(int i=1;i<m;i++)
     {
      scanf("%d%d",&a,&b);
      if(abs(b-pre_b)>(a-pre_a))
      {
       flag=0;
      }
      ans=max(ans,(a-pre_a+pre_b+b)/2);
      pre_a=a;
      pre_b=b;
      //printf("pre a b %d %d ",pre_a,pre_b);
     }
     ans=max(ans,pre_b+n-pre_a);
     if(flag!=0)
     {
      printf("%d ",ans);
     }
     else
     {
      printf("IMPOSSIBLE ");
     } 
     return 0;
    }

  • 相关阅读:
    第六章 实验报告
    第三次实验报告
    第五章 循环结构课后反思
    第二次实验报告
    第一次实验报告
    第一次作业
    第九章
    指针实验报告
    第七次实验报告
    第六章
  • 原文地址:https://www.cnblogs.com/DemonZiv/p/7105448.html
Copyright © 2011-2022 走看看