• 小Q爬塔


    问题描述:小Q正在攀爬一座宝塔,这座宝塔很特别,塔总共有n层,但是两层之间的净高却不相同,所以造成小Q爬过每层的时间也不同。
    如果某一次高度为x,那么爬过这一层所需时间也就是x。小Q还会使用一种魔法,每使用一次可以让他向上跳1层或者两层,但是每次调后,
    必须至少爬一层才能接着使用魔法。小Q想用最短的时间上顶,希望你能告诉他
    n表示高度(n<=10000)
    x表示层差(1<=x<=100)
    问题分析:
    * p[i]表示到达第i层最短时间,并且到达第i层方式是爬
    * t[i]表示到达第i层最短时间,并且到达第i层方式是跳
    * 情况一:到达第i层的方式是爬
    * 那么到达第i-1层的方式可以是跳,也可以是爬,二者选一
    * p[i] = Math.min(p[i-1],t[i-1])+x;
    * 情况二:到达第i层的方式是跳
    * 那么可以从第i-1层起跳,也可以从i-2层起跳,并且到达i-1层和i-2层的方式只能是爬,所以二者选最小的
    * t[i] = Math.min(p[i-1],p[i-2]);
    代码实现如下:
    public class Main {
        public static void main(String[] args) {
            int[] p = new int[10005];
            int[] t = new int[10005];
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            for (int i = 1; i <=n ; i++) {
                int x = sc.nextInt();
                p[i] = Math.min(p[i-1],t[i-1]) + x;
                if(i == 1) continue;
                t[i] = Math.min(p[i-1],p[i-2]);
            }
            System.out.println(Math.min(p[n],t[n]));
    
        }
    }
  • 相关阅读:
    bzoj 1257: [CQOI2007]余数之和sum 数论
    codevs 1063 合并果子 STL 优先队列
    HTTP错误code大全
    URL中的特殊字符处理笔记
    单例中懒汉和饿汉的本质区别
    关于静态方法的使用方式
    111
    WebService 简单安全验证
    WebService安全解决方案—简单握手协议
    RESTEasy使用json返回的例子
  • 原文地址:https://www.cnblogs.com/du001011/p/11103298.html
Copyright © 2020-2023  润新知