zoukankan      html  css  js  c++  java
  • XTU1198:Candy(背包)

    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/libin56842/article/details/26182519

    题目描写叙述

    Henry和Lena近期买了非常多各种各样的糖…他们决定把全部糖分了… 可是两个人都不希望自己糖的总重量比对方少太多。 鉴于不同的糖的味道不尽同样,所以每一个糖都有一个yummy值。 Henry希望知道在两人得到的糖总质量差不大于m的时候,自己的糖yummy值之和的尽量大。

    输入

    有多组数据 每组数据第一行为两个整数。n,m,(1 <=n <= 100。 0 <= m <= 500) 接下来有两行,每行有n个数,第一行的第i个数表示第i颗糖的重量xi( 0 < xi <= 100), 第二行的第i个数表示第i颗糖的yummy值 yi( 0 < yi <= 100 )

    输出

    每行输出一组数据的结果, 一个数表示Henry的糖的总yummy值的最大值。假设不存在如题所述的分糖方案,输出-1

     

    例子输入

    1 30
    43
    15
    2 290
    89 22
    76 77
    

    例子输出

    -1
    153
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    int wei[110],val[110],dp[10010];
    int main()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)>0)
        {
            memset(dp,-1,sizeof(dp));
            int sum=0;
            for(int i=0; i<n; i++)
            {
                scanf("%d",&wei[i]);
                sum+=wei[i];
            }
            for(int i=0; i<n; i++)
                scanf("%d",&val[i]);
            dp[0]=0;
            int ans=0;
            for(int i=0; i<n; i++)
            {
                for(int j=sum; j>=wei[i]; j--)
                {
                    if(~dp[j-wei[i]])
                    {
                        dp[j]=max(dp[j],dp[j-wei[i]]+val[i]);
                        int ss=sum-j-j;
                        if(ss>=-m&&ss<=m) ans=max(ans,dp[j]);
                    }
                }
            }
            printf("%d
    ",ans?ans:-1);
        }
        return 0;
    }
    


    
                
  • 相关阅读:
    网络七层
    微信小程序开发工具 常用快捷键
    BZOJ 1026 windy数 (数位DP)
    BZOJ 1026 windy数 (数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3709 Balanced Number (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/9944619.html
Copyright © 2011-2022 走看看