zoukankan      html  css  js  c++  java
  • 装箱问题

    8785:装箱问题

       总时间限制: 

    1000ms
     
    内存限制: 
    65536kB
    描述

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

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

    输入
    第一行是一个整数V,表示箱子容量。
    第二行是一个整数n,表示物品数。
    接下来n行,每行一个正整数(不超过10000),分别表示这n个物品的各自体积。
    输出
    一个整数,表示箱子剩余空间。
    样例输入
    24
    6
    8
    3
    12
    7
    9
    7
    样例输出
    0
    来源
    NOIP2001复赛 普及组 第四题
    【思路】是取若干个物品 不是每个物品取若干个;
    先01背包求f[V]不超过V体积能放物品体积的最大值
    再求V-f[V]'
    【代码】
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int v[50],f[21000];
    int main()
    {
        int V,n;
        scanf("%d%d",&V,&n);
        for(int i=1;i<=n;i++)
        scanf("%d",&v[i]);
        for(int i=1;i<=n;i++)
        {
            for(int k=V;k>=v[i];k--)
            {
                f[k]=max(f[k],f[k-v[i]]+v[i]);
            }
        }
        printf("%d",V-f[V]);
        return 0;
    }
  • 相关阅读:
    Oracle配置手册
    Vim配置手册
    高斯消元
    dp专场的蒟蒻题解
    mac 软件意外退出
    spring security整体流程
    服务启动shell脚本
    nohup 启动命令
    linux service脚本
    docker 安装prometheus和grafna
  • 原文地址:https://www.cnblogs.com/zzyh/p/6751538.html
Copyright © 2011-2022 走看看