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;
    }

  • 相关阅读:
    012 spring retry重试原理的解析
    011 @Retryable的使用
    010 @ControllerAdvice
    009 SpringBoot+Swagger的使用
    008 @Import作用
    007 SpringBoot的@EnableAutoConfiguration注解
    001 品牌管理案例
    000 vue各种基本指令
    013 JS
    002 docker基本的命令
  • 原文地址:https://www.cnblogs.com/DemonZiv/p/7105448.html
Copyright © 2011-2022 走看看