• dp(装箱)


    请小伙伴们对自己AC的题目进行标记,注意每人只能标记一次!不知道的不要标记,恶意标记者将回收账号!!!

    问题 B: 装箱问题

    时间限制: 1 Sec  内存限制: 128 MB
    [提交] [状态]

    题目描述

    有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。
    要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

    输入

    第一行为一个整数,表示箱子容量;
    第二行为一个整数,表示有n个物品;
    接下来n行,每行一个整数表示这n个物品的各自体积。

    输出

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

    样例输入 Copy

    24
    6
    8
    3
    12
    7
    9
    7
    

    样例输出 Copy

    0

    箱子剩余最小则让其装的最多
    dp[j]=max(dp[j],dp[j-a[i]+a[i])
    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
    typedef long long ll;
    const int maxn=100000;
    const int M=1e7+10;
    const int INF=0x3f3f3f3f;
    int dp[maxn];
    int a[maxn];
    int main()
    {
        int v,n;
        cin>>v>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        for(int i=1;i<=n;i++){
            for(int j=v;j>=a[i];j--){
                dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
            }
        }
        printf("%d",v-dp[v]);
        return 0;
    }
     
  • 相关阅读:
    PHP合并数组array_merge函数运算符加号与的区别
    PHP 字符串为空
    50段超实用CSS代码(1)
    WCF 第三章 信道 总结
    WCF 第三章 信道 操作契约和信道形状
    WCF 第三章 信道
    WCF 第三章 信道形状
    WCF 第二章 契约 数据契约版本
    WCF 第二章 契约 消息契约
    WCF 第二章 契约 系列文章
  • 原文地址:https://www.cnblogs.com/lipu123/p/12194512.html
Copyright © 2020-2023  润新知