zoukankan      html  css  js  c++  java
  • hdu 2844 Coins(dp 多重背包)

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct Coin{
      int v,c;
    };
    Coin coin[200];
    int dp[100000+100];
    int main()
    {
        int t,n,m;
        int p,h,c;
        int i,j,k;
        while(scanf("%d%d",&n,&m),n+m)
        {
            for(i=0;i<n;i++)
            {
              scanf("%d",&coin[i].v);
            }
            for(i=0;i<n;i++)
            {
                scanf("%d",&coin[i].c);
            }
            memset(dp,0,sizeof(dp));
            dp[0]=1;
            for(i=0;i<n;i++)
            {
                int tot=coin[i].c;
                for(j=1;j<=tot;j*=2)
                {
                    tot-=j;
                    for(k=m;k>=j*coin[i].v;k--)
                    {
                        if(dp[k-j*coin[i].v]==1) dp[k]=1;
                    }
                }
                if(tot!=0)
                {
                   for(k=m;k>=tot*coin[i].v;k--)
                    {
                        if(dp[k-tot*coin[i].v]==1) dp[k]=1;
                    }
                }
            }
            int ans=0;
            for(i=1;i<=m;i++)
            {
                if(dp[i]==1) ans++;
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    Splash wait() 方法
    Splash go() 方法
    Splash 对象方法
    短信接口文档
    WMS开发环境
    Eureka
    pom.xml settings.xml
    Druid
    EAI并发
    重启WMS服务
  • 原文地址:https://www.cnblogs.com/sola1994/p/4685998.html
Copyright © 2011-2022 走看看