zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 算法提高 和谐宿舍2

    试题 算法提高 和谐宿舍2

    资源限制
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      我的某室友学过素描,墙上有n张他的作品。这些作品都是宽度为1,高度不定的矩形,从左到右排成一排,且底边在同一水平线上。
      宿舍评比就要来了,为了及格,我们决定买不多于m块的矩形木板,把这些作品和谐掉。要求木板也从左到右排成一排,且底边与作品的底边在同一水平线上。
      在能够把所有作品和谐掉的前提下,我们希望这些木板的面积和最小,问最小面积和。

    在这里插入图片描述

    输入格式
      第一行两个数n和m,表示作品数和木板数;
      第二行n个数Hi,表示从左到右第i个作品的高度。
    输出格式
      一行一个数ans,表示答案。
    样例输入
    5 2
    4 2 3 5 4
    样例输出
    22
    数据规模和约定
      对于30%的数据:1<=n,m<=10;
      对于100%的数据:1<=n,m<=100,1<=Hi<=10000。

    package com.company;
    
    import java.util.Scanner;
    
    public class 和谐宿舍2 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
            int [] heights = new int[n+1];
            for (int i=1;i<=n;i++){
                heights[i]=sc.nextInt();
            }
            sc.close();
            int  [][] max_height = new int[n+1][n+1];
            int [] [] f = new int[n+1][m+1];
            //max_height[i][i]是i~j最高的高度
            for (int i=1;i<=n;i++){
                max_height[i][i]=heights[i];
                for (int j=i+1;j<=n;j++){
                    max_height[i][j]=Math.max(max_height[i][j-1],heights[j]);
                }
            }
            for (int i=1;i<=n;i++){
                //前i个作品的第一个组,(第一个组为前i个商品)
                f[i][1]=i*max_height[1][i];
                for (int j=2;j<=i && j<=m;j++){
                    f[i][j]=Integer.MAX_VALUE;
                    //k的取值范围是总数减去当前的组数+1    前面一个组最少占了一个作品
                    for (int k=1;k<=i-j+1;k++){//   当前的j-1(上一个组)就是前i-k个作品       后面就是i-k+1到第i个最高的*他们的宽度k(宽度是1,k为个数)
                        f[i][j]=Math.min(f[i][j],    f[i-k][j-1]+k                   *      max_height[i-k+1][i]);
                    }
    //                System.out.print(f[i][j]+" ");
                }
    //            System.out.println();
            }
            System.out.println(f[n][m]);
    
        }
    }
    
    
  • 相关阅读:
    设计模式整理_单例设计模式
    设计模式整理_工厂模式
    设计模式整理_装饰者模式
    设计模式整理_观察者模式
    设计模式整理_策略模式
    JavaSE复习_7 异常
    JavaSE复习_6 枚举类
    JavaSE复习_5 Eclipse的常见操作
    pta编程题19 Saving James Bond 2
    ImportError: No module named PIL
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075789.html
Copyright © 2011-2022 走看看