zoukankan      html  css  js  c++  java
  • C. Tourist's Notes

    题目链接

    题意:n天内登山,相邻两次登山的高度差的绝对值小于等于1,也就是说每次高度变化只能是:0,1,-1.我们已经知道n天中部分天数人所在的山的高度,求最大的登山高度。

    输入:

    n m  n 是天数,m是已经知道的登山天数

    di  dhi  di天,所在的高度是dhi,共有m行

    输出:

    最大的登山高度。

    Java程序:

    import java.util.Scanner;
    
    
    public class C538 {
    
        public static void run(){
            Scanner in = new  Scanner(System.in);
            int n=in.nextInt();
            int m=in.nextInt();
            int ans = 0;
            int res = 0;
            int prea =in.nextInt();
            int preb =in.nextInt();
            m--;
            ans=preb+prea-1;// 第一次之前,可能的最大高度
            int a=0;int b=0;
            boolean flag=true;
            while(m!=0){
                a=in.nextInt();
                b=in.nextInt();
                if(Math.abs(b-preb) >a-prea)// 为真,说明中间有走的步长 大于 1 或小于 -1
                    flag = false;
                if(flag){
                    int disd= a-prea;
                    int dish=b-preb;
                    if(dish>=0){  // prea 到 a 高度上升 ,dish是两次的高度差
                        res=preb+dish;// 走了dish 高度,要dish天
                        disd-=dish; //  减去后的值,是走完disd天,高度没有变化
                        res+=disd/2;// 步长-1 1 最大的高度是先走disd/2 再下降 disd/2 (共disd天)
                        ans=Math.max(ans, res); //最大值是最大的高度
                    }else{// prea 到 a 高度下降了
                        disd+=dish; // dish有效的下降天数,等式的结果是在disd天内高度没有变化
                        res =preb+disd/2; // 最大的高度是在disd/2 天内高度上升disd/2
                        ans = Math.max(ans,res);
                        
                        
                    }
                }
                prea =a;
                preb =b;
                m--;
            }
            if(flag){
                preb+=n-prea;
                ans = Math.max(ans, preb);
                System.out.println(ans);
            }else
            System.out.println("IMPOSSIBLE");
        }
        public static void main(String[] args){
            run();
        }
    }
  • 相关阅读:
    hihocoder 1142 三分·三分求极值(三分)
    poj 3304 Segments(计算直线与线段之间的关系)
    poj 1269 Intersecting Lines(判断两直线关系,并求交点坐标)
    poj 2398 Toy Storage(计算几何 点线关系)
    poj 2318 TOYS(计算几何 点与线段的关系)
    计算几何基础(模板)
    Jmeter-基本组成
    java-面向对象
    性能测试基础
    java-多线程
  • 原文地址:https://www.cnblogs.com/theskulls/p/4665726.html
Copyright © 2011-2022 走看看