zoukankan      html  css  js  c++  java
  • POJ 2392(DP

    题意:有K个积木,每个给出块数,高度和这种块不能超过的最大高度,问最高能垒多高。

    经历了强行转换语言的阵痛啊。。。。java自定义排序不会写,然后又mle了,让我开始怀疑java的性能(其实只是因为脑残没写滚动数组。。。。)

    经典的多重背包,状态是前i种垒到j高时能剩下的第i种块的数目。

    import java.util.*;
    import java.math.*;
    import java.io.*;
    public class Main {
        public static final int maxv=2000+40;
        public static void main(String[] args) throws Exception {
            Scanner in = new Scanner(new File("/home/develop/eclipse_file/ACMproject/src/in"));
            // Scanner in=new Scanner(System.in);
            int K=in.nextInt();
            bl[] sc=new bl[K];
            for(int i=0;i<K;i++){
                sc[i]=new bl();
                sc[i].h=in.nextInt();
                sc[i].a=in.nextInt();
                sc[i].c=in.nextInt();
            }
            Arrays.sort(sc);
            int[] dp1=new int[40001];
            int[] dp2=new int[40001];
            int[] swap;
            for(int j=0;j<40001;j++) dp1[j]=-1;
            dp1[0]=0;
            for(int i=1;i<=K;i++){
                for(int j=0;j<40001;j++){
                    if(dp1[j]>=0){
                        dp2[j]=sc[i-1].c;
                    }else if(j-sc[i-1].h>=0&&dp2[j-sc[i-1].h]>0&&j<=sc[i-1].a){
                        dp2[j]=dp2[j-sc[i-1].h]-1;
                    }else{
                        dp2[j]=-1;
                    }
                }
                swap=dp1;
                dp1=dp2;
                dp2=swap;
            }
            int ans=0;
            for(int i=0;i<=40000;i++){
                if(dp1[i]>=0) ans=i;
            }
            System.out.println(ans);
            in.close();
        }
    }
    class bl implements Comparable<bl> {
        int h,a,c;
        @Override
        public int compareTo(bl a){
            return this.a-a.a;
        }
    }
    View Code
  • 相关阅读:
    xlrd doc
    安装Python package
    Python处理Excel(转载)
    OPENSSL简介
    sublime text2教程
    使用SQL 从表中取记录
    SQL基础
    shell脚本之grep的使用方法
    (转载)(收藏)OceanBase深度解析
    (转载)线程池的使用
  • 原文地址:https://www.cnblogs.com/Cw-trip/p/4584251.html
Copyright © 2011-2022 走看看