• [codevs1014]装箱问题


    Codevs 1014 装箱问题

     

    题目描述 Description

    有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。

    要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

    输入描述 Input Description

    一个整数v,表示箱子容量

    一个整数n,表示有n个物品

    接下来n个整数,分别表示这n 个物品的各自体积

    输出描述 Output Description

    一个整数,表示箱子剩余空间。

    样例输入 Sample Input

    24

    6

    8

    3

    12

    7

    9

    7

    样例输出 Sample Output

    0

    一开始想复杂了..然后就时间超限了

    一维dp

    Dp[v]表示当箱子体积为v时,最多能装的体积

    !里面那重循环必须从大往小!

    不然同一个东西会装好多次!

    #include<iostream>
    
    #include<cstdio>
    
    #include<cstdlib>
    
    #include<cstring>
    
    #include<cmath>
    
    #include<algorithm>
    
     
    
    using namespace std;
    
     
    
    int v,n,a,dp[20101];
    
    int read()
    
    {
    
        int x=0,f=1;
    
        char ch=getchar();
    
        while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    
        while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
    
        return x*f;
    
    }
    
    int main()
    
    {
    
        memset(dp,0,sizeof(dp));
    
        v=read();n=read();
    
        for(int i=1;i<=n;i++)
    
        {
    
            a=read();
    
            for(int j=v;j>=a;j--)
    
            {
    
                dp[j]=max(dp[j],dp[j-a]+a);//!!!!!
    
            }
    
        }
    
        cout<<v-dp[v];
    
        system("pause");
    
        return 0;
    
    }
  • 相关阅读:
    Python装饰器之functools.wraps的作用
    [转]scala和RDD中的占位符"_"
    Scala,Java,Python 3种语言编写Spark WordCount示例
    CentOS系统安装Python3
    [爬虫]采用Go语言爬取天猫商品页面
    go语言的排序和去重
    go语言字符串的连接和截取
    [转]git commit --amend用法
    KM算法小结
    Protocol Buffers学习教程
  • 原文地址:https://www.cnblogs.com/taojy/p/7120990.html
Copyright © 2020-2023  润新知