zoukankan      html  css  js  c++  java
  • 分组背包(待更新)

    NN 组物品和一个容量是 VV 的背包。

    每组物品有若干个,同一组内的物品最多只能选一个。
    每件物品的体积是 vijvij ,价值是 wijwij ,其中 ii 是组号,jj 是组内编号。

    求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。

    输出最大价值。

    输入格式

    第一行有两个整数 NVN,V ,用空格隔开,分别表示物品组数和背包容量。

    接下来有 NN 组数据:

    • 每组数据第一行有一个整数 SiSi ,表示第 ii 个物品组的物品数量;
    • 每组数据接下来有 SiSi 行,每行有两个整数 vij,wijvij,wij ,用空格隔开,分别表示第 ii 个物品组的第 jj 个物品的体积和价值;

    输出格式

    输出一个整数,表示最大价值。

    数据范围

    0<N,V1000<N,V≤100
    0<Si1000<Si≤100
    0<vij,wij1000<vij,wij≤100

    输入样例

    3 5
    2
    1 2
    2 4
    1
    3 4
    1
    4 5
    

    输出样例:

    8

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define HEAP(...) priority_queue<__VA_ARGS__ >
    #define heap(...) priority_queue<__VA_ARGS__,vector<__VA_ARGS__ >,greater<__VA_ARGS__ > >
    template<class T> inline T min(T &x,const T &y){return x>y?y:x;}
    template<class T> inline T max(T &x,const T &y){return x<y?y:x;}
    ll read(){ll c = getchar(),Nig = 1,x = 0;while(!isdigit(c) && c!='-')c = getchar();if(c == '-')Nig = -1,c = getchar();while(isdigit(c))x = ((x<<1) + (x<<3)) + (c^'0'),c = getchar();return Nig*x;}
    #define read read()
    const ll inf = 1e18;
    const int INF=0x3f3f3f3f;
    const int maxn = 1e5 + 7;
    const int mod = 1e9 + 7;
    const int N = 200;
    int dp[N];
    int v[N],w[N];
    int main()
    {
        int n,m;
        cin>>n>>m;
        for(int i=0;i<n;i++){
            int s;
            cin>>s;
            for(int j=0;j<s;j++){
                cin>>v[j]>>w[j];
            } 
            for(int j=m;j>0;j--){
                for(int t=0;t<s;t++)
                    if(j>=v[t]){
                        dp[j]=max(dp[j],dp[j-v[t]]+w[t]);
                    }
            }
        }
        printf("%d",dp[m]);
        return 0;
    }
     
  • 相关阅读:
    python 文件 笔记
    python 模块、包 笔记
    类、对象
    python 函数 笔记
    测试价值体现
    断舍离-笔记2
    Happy 2006 POJ
    Triangle War POJ
    Complete the sequence! POJ
    放苹果 POJ
  • 原文地址:https://www.cnblogs.com/lipu123/p/12185190.html
Copyright © 2011-2022 走看看